Hi,
1) Da hast du recht
2) Dachte ich auch, aber scheinbar ist das nicht der Fall.
Folgendes funktioniert:
Delphi-Quellcode:
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
arr: Array[3..7] of String;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure FillArray(var Dest: Array of String; Source: Array of String);
begin
Move(Source[Low(Source)],Dest[Low(Dest)],Length(Dest)*4);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FillArray(arr,['Hallo','Welt','!','DelphiPraxis','!']);
end;
procedure TForm1.Button2Click(Sender: TObject);
var i: Integer;
begin
for i:= low(arr) to high(arr) do
ShowMessage(arr[i]);
end;
Wegen 1) werd ich mal gucken...
@Sherlock
Zitat:
Da passiert mit Zeigern gar nichts.
Doch, es werden nur die Pointer auf die eigentlichen Strings von Array zu Array kopiert
Zitat:
Verschiebe vom ersten Element des Arrays Source an, alle seine Elemente in das Array Dest, aber nur maximal so viele wie in Dest reinpassen.
Richtig.
Zitat:
Und da ist glaub ich noch ein Problem, denn wenn in Source weniger ist als in Dest rein passt, wird unvorhersehbares als weiteres Arrayelement zugeordnet.
Dieser Teil des Arrays wird dann gar nicht angerührt. Von daher kein Problem.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."