![]() |
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Da passiert mit Zeigern gar nichts. Dest und Source sind doch im Header der procedure als Arrays deklariert.
Aufgedröselt bedeutet
Delphi-Quellcode:
nichts anderes als:
Move(Source[Low(Source)],Dest[Low(Dest)],Length(Dest)*4);
Verschiebe vom ersten Element des Arrays Source an, alle seine Elemente in das Array Dest, aber nur maximal so viele wie in Dest reinpassen. 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. Sherlock |
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Hi,
1) Da hast du recht :? 2) Dachte ich auch, aber scheinbar ist das nicht der Fall. Folgendes funktioniert:
Delphi-Quellcode:
Wegen 1) werd ich mal gucken...
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; @Sherlock Zitat:
Zitat:
Zitat:
|
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Mit konstanten Strings funktioniert das, da der Referenzzähler dort immer auf -1 steht. Trotzdem sollte man es lieber sauber machen.
|
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Hmmm...ich seh das mit den Pointern nicht.
Aus der OH: Zitat:
In dieser Hinsicht sind vielleicht Source[Low(Source)] und Dest[Low(Dest)] als Zeiger zu werten. Aber kopiert wir doch der Inhalt des Arrays Source. Aber... :gruebel: Sherlock |
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Das Array enthält Ansistrings, welche Zeiger sind. Dabei wird der Referenzzähler nicht erhöht.
|
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Zitat:
Delphi-Quellcode:
auch die sauberste Methode.
procedure FillArray(var Dest: array of string; const Source: array of string);
var I: Integer; begin for I := 0 to Min(Length(source), Length(Dest)) - 1 do Dest[I] := Source[I]; end; |
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Zitat:
|
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Zitat:
Delphi-Quellcode:
FillArray(arr,['Hallo','Welt','!','DelphiPraxis','!']);
arr[4]:='bla'; Das Array erhält mit "FillArray" die Zeiger der Konstanten. Dann wird mit dem Zweiten Befehl in den Speicher der Konstanten geschrieben. Übel. |
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Zitat:
Das ist tatsächlich die eleganteste Lösung. Zugelernt habe ich, daß der Anfang eines Array in der Procedure immer mit 0 beginnt, obwohl das übergebende Array einen ganz anderen Indexbereich hat. z.B. von 4 bis 8. |
Re: Syntax-Frage: Einem Array mehrere Werte "aufeinmal&
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz