![]() |
Schleife
Hi
Ich führe eine schleife aus um den Inhalt aus einer txt datei in eine combobox1 zufüllen. Die Inhalte der Txt datei sind durch trennzeichen getrennt und ich brauche den Inhalt vor dem ersten trennzeichen. Komischerweise trägt er immer den gleichen ( den ersten eintrag ) in die combobox obwohl es vom code her eigentlich richtig ist. Wo ist also der fehler ?
Delphi-Quellcode:
function explode(sPart, sInput: string): ArrOfStr;
begin while Pos(sPart, sInput) <> 0 do begin SetLength(Result, Length(Result) + 1); Result[Length(Result) - 1] := Copy(sInput, 0,Pos(sPart, sInput) - 1); Delete(sInput, 1,Pos(sPart, sInput)); end; SetLength(Result, Length(Result) + 1); Result[Length(Result) - 1] := sInput; end;
Delphi-Quellcode:
List:=TStringlist.create;
list.loadfromfile('user.txt'); for i:=0 to list.Count-1 do begin arr:=explode(';',list.strings[i]); combobox1.Items.add(arr[0]); end; Wenn ich diese Zeile rausnehme
Delphi-Quellcode:
und
arr:=explode(';',list.strings[i]);
Delphi-Quellcode:
hinzufüge trägt er zwar alles korrekt ein aber nur den ganzen string.
list.strings[i]
Danke schonmal im vorraus mFG |
Re: Schleife
Initialisiere das Ergebnis der Prozedur mal richtig.
Delphi-Quellcode:
PS: ArrOfStr
function explode(sPart, sInput: string): ArrOfStr;
begin Result := nil; // aka SetLength(Result, 0); while ...
Delphi-Quellcode:
// Unit Types
type TStringDynArray = array of string; |
Re: Schleife
Hallo,
so ganz habe ich nicht geblickt, was Du da machst, aber wird Arr im Laufe der Schleife nicht immer größer und Arr[0] bleibt immer der erste Eintrag? Wenn Du immer Arr[0] hinzufügen willst, dann musst Du vor dem Befüllen von Arr auch sicherstellen, dass es leer ist, sonst werden weitere Einträge hinten dran gehangen. Wenn die Routine korrekt arbeitet, müsste doch eigentlich
Delphi-Quellcode:
funktionieren? Oder täusche ich mich da?
combobox1.Items.add(arr[i]);
himitsu dürfte Dir da schon den richtigen Ansatz geliefert haben. |
Re: Schleife
Ich verstehe gar nicht, wozu man da Explode braucht, einen einfachen Copy-Befehl kann man doch selbst einbauen.
Delphi-Quellcode:
Ungetestet.
List:=TStringlist.create;
list.loadfromfile('user.txt'); for i:=0 to list.Count-1 do begin combobox1.Items.add(Copy(list[i],1,Pos(';',list[i])-1)); end; |
Re: Schleife
mit der explode function hat schon so seine richtigkeit
das ist die gleiche function wie aus PHP explode(); Weil in meinen strings verscheidene informationen stehen wie unter anderen vorname nachname und in arr[0] steht vor+ nachname also mit der 0 stimmt schon. arr[1] wäre dann der teil vor dem 2ten trennzeichen. |
Re: Schleife
Aber wozu ein Array mit zig Elementen, von denen man dann alle außer einem wieder verwirft? Hast Du meinen Code einmal ausprobiert?
|
Re: Schleife
Hallo,
Zitat:
|
Re: Schleife
Diese eine Stelle ist mit Sicherheit falsch:
Delphi-Quellcode:
(Es muß 1 statt 0 heißen). Ich weiß zwar nicht ob, ob das den Fehler beseitig, aber... Aber besser ist auf jeden Fall der Vorschlag von DeddyH.
Result[Length(Result) - 1] := Copy(sInput, 0,Pos(sPart, sInput) - 1);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 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