![]() |
For-In-Schleifen-Problem mit String-Array
Man könnte denke ich bin mal wieder eine blinde Kuh.
Aber der Code hier unten wirft eine Exception aus, nachdem die Messagebox mit "cab" angezeigt wurde und mir ist es völlig schleierhaft warum ?! Der Code ist auf das absolut Nötigste reduziert und da tritt der Fehler auch noch auf. Ich möchte jeden Wer von Array Values ins Array ResArray schreiben. Natürlich ist der Code umfangreicher und gewisse Anpassungen werden vorgenommen wenn z.B. ein Eintrag einen Punkt als erstes Zeichen hat wird der entfernt und sowas. Aber das da unten ist das Miniumum-Beispiel was noch immer nicht funktioniert.
Delphi-Quellcode:
var
ResArray, Values: TArray<string>; Tmp: string; begin // Ein ganz normales String-Array Values := TArray<string>.Create('1', '2', '3'); // String-Array Values durchiterieren for Tmp in Values do begin ShowMessage(Tmp); SetLength(ResArray, Length(ResArray) + 1); ResArray[Length(ResArray)] := Tmp; // Der Fehler tritt in dieser Zeile auf glaube ich end; end; |
AW: For-In-Schleifen-Problem mit String-Array
Bin nicht am Rechner, aber nicht length(resarray) sondern high(resarray) bei der Zuweisung.
Length ist immer eins zu hoch....... Sorry am smartphone |
AW: For-In-Schleifen-Problem mit String-Array
Da du Probleme hast, solltest du auch mal die Index- und Bereichsprüfung in den Projektoptionen aktivieren.
Und da du nur glaubst wo der Fehler auftritt, würde es nicht schaden zu lernen wie man den Debugger benutzt. |
AW: For-In-Schleifen-Problem mit String-Array
Fritz konnte mir helfen, ohne auf mich einzudreschen. Vielen Dank.
|
AW: For-In-Schleifen-Problem mit String-Array
"dreschen" ist ein wenig hart formuliert.
Aber der Debugger und die Projektoptionen gehören nun mal zum Basiswissen im Umgang mit dem Compiler. Gruß K-H |
AW: For-In-Schleifen-Problem mit String-Array
Das war nur so dahingesagt :P
Aber ich weiß was ihr meint und ja, es stimmt schon. |
AW: For-In-Schleifen-Problem mit String-Array
Man kann Elemente auch einfach an ein Array dranhängen, ohne SetLength zu bemühen.
Delphi-Quellcode:
Siehe
var
ResArray, Values: TArray<string>; Tmp: string; begin // Ein ganz normales String-Array Values := TArray<string>.Create('1', '2', '3'); // String-Array Values durchiterieren for Tmp in Values do begin ShowMessage(Tmp); ResArray := ResArray + [Tmp]; end; end; ![]() |
AW: For-In-Schleifen-Problem mit String-Array
Zitat:
|
AW: For-In-Schleifen-Problem mit String-Array
So viel Langsamer sollte es nicht sein, als dieses ständige SetLength in jedem Durchlauf.
Also besser wäre es ja wohl, wenn man die Größe des Ziel-Arrays vor den Zuweisungen nur einmal auf Länge bringt. Aber seit Kurzem kann man ja auch einfach sowas machen. :stupid:
Delphi-Quellcode:
for Tmp in Values do
ShowMessage(Tmp); ResArray := ResArray + Values; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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