AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein For-In-Schleifen-Problem mit String-Array
Thema durchsuchen
Ansicht
Themen-Optionen

For-In-Schleifen-Problem mit String-Array

Ein Thema von DieDolly · begonnen am 1. Okt 2018 · letzter Beitrag vom 3. Okt 2018
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

For-In-Schleifen-Problem mit String-Array

  Alt 1. Okt 2018, 22:46
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;

Geändert von DieDolly ( 1. Okt 2018 um 23:59 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: For-In-Schleifen-Problem mit String-Array

  Alt 1. Okt 2018, 23:12
Bin nicht am Rechner, aber nicht length(resarray) sondern high(resarray) bei der Zuweisung.
Length ist immer eins zu hoch.......
Sorry am smartphone
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#3

AW: For-In-Schleifen-Problem mit String-Array

  Alt 1. Okt 2018, 23:34
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: For-In-Schleifen-Problem mit String-Array

  Alt 1. Okt 2018, 23:58
Fritz konnte mir helfen, ohne auf mich einzudreschen. Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: For-In-Schleifen-Problem mit String-Array

  Alt 2. Okt 2018, 00:10
"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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: For-In-Schleifen-Problem mit String-Array

  Alt 2. Okt 2018, 00:30
Das war nur so dahingesagt
Aber ich weiß was ihr meint und ja, es stimmt schon.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#7

AW: For-In-Schleifen-Problem mit String-Array

  Alt 2. Okt 2018, 10:14
Man kann Elemente auch einfach an ein Array dranhängen, ohne SetLength zu bemühen.

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);
   ResArray := ResArray + [Tmp];
  end;
end;
Siehe Docwiki
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: For-In-Schleifen-Problem mit String-Array

  Alt 3. Okt 2018, 12:13
Man kann Elemente auch einfach an ein Array dranhängen, ohne SetLength zu bemühen.
Ist aber langsamer, wenn ich mich richtig erinnere.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#9

AW: For-In-Schleifen-Problem mit String-Array

  Alt 3. Okt 2018, 13:55
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.
Delphi-Quellcode:
for Tmp in Values do
  ShowMessage(Tmp);
ResArray := ResArray + Values;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Okt 2018 um 13:58 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz