Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi liste in schleife laden (https://www.delphipraxis.net/74863-liste-schleife-laden.html)

toredo 9. Aug 2006 20:46


liste in schleife laden
 
hallo,

weiss hier jemand wie ich in etwa so einen code machen kann, im erklären bin ich leider ned so gut drum hab ich mal versucht so nen "beispielcode" zu basteln:

es existiert eine datei mit "einträgen", der inhalt ist z.B. so:
Zitat:

lol; hoi; edou; gova;
sie heisst data.dat und delp liegt im selben verzeichnis wie die exe:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i, a: integer;
eintrag: string;
begin
a:=? //anzahl einträge in der data.dat
for i:=1 to a do
begin
eintrag:=? //i'ter eintrag in der data.dat
//irgendein code:
//----------------
ShowMessage('eintrag');
//----------------
end;
...
ich hoffe jemand versteht was ich meine.


mfG toredo

3_of_8 9. Aug 2006 20:51

Re: liste in schleife laden
 
Lade die Datei in eine StringList und splitte den String dann auf mit dieser Funktion aus der Codelib:

Delphi-Quellcode:
function Split(const fText: String; const fSep: Char; fTrim: Boolean=false; fQuotes: Boolean=false):TStringList;
var vI: Integer;
    vBuffer: String;
    vOn: Boolean;
begin
  Result:=TStringList.Create;
  vBuffer:='';
  vOn:=true;
  for vI:=1 to Length(fText) do
  begin
    if (fQuotes and(fText[vI]=fSep)and vOn)or(Not(fQuotes) and (fText[vI]=fSep)) then
    begin
      if fTrim then vBuffer:=Trim(vBuffer);
      if vBuffer='' then vBuffer:=fSep; // !!! sonst läuft z.B. split(',**',',') auf einen Hammer...
      if vBuffer[1]=fSep then
        vBuffer:=Copy(vBuffer,2,Length(vBuffer));
      Result.Add(vBuffer);
      vBuffer:='';
    end;
    if fQuotes then
    begin
      if fText[vI]='"' then
      begin
        vOn:=Not(vOn);
        Continue;
      end;
      if (fText[vI]<>fSep)or((fText[vI]=fSep)and(vOn=false)) then
        vBuffer:=vBuffer+fText[vI];
    end else
      if fText[vI]<>fSep then
        vBuffer:=vBuffer+fText[vI];
  end;
  if vBuffer<>'' then
  begin
    if fTrim then vBuffer:=Trim(vBuffer);
    Result.Add(vBuffer);
  end;
end;

Helmi 9. Aug 2006 20:53

Re: liste in schleife laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich hatte mal ein ähnliches Problem.
Ich wollte einen String, bei dem Einträge mit einem Trenn-Zeichen getrennt sind, wieder aufzusplitten.

Anbei ein Test-Programm von mir.

toredo 9. Aug 2006 20:58

Re: liste in schleife laden
 
danke ich werde den code gleich ausprobieren, falls es probleme gibt poste ich sie ansonsten prog ich weiter.


mfG toredo

-edit-
@helmi werd ich gleich auch noch anschauen, thx :-D


mfG toredo


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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