Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Txt Datei Tabulatorschritte --> Stringlist (https://www.delphipraxis.net/41382-txt-datei-tabulatorschritte-stringlist.html)

Schuster 2. Mär 2005 16:30


Txt Datei Tabulatorschritte --> Stringlist
 
Habe folgendes Problem

habe eine txt Datei die so aufgebaut ist:

Delphi-Quellcode:
Abbrenn   St   Wildalpen   8924   Wildalpen
Die großen Abstände sind Tab-Schritte.

Nun will ich diese txt datei in eine Stringlist laden.
(Hab ich schon)

Nun will ich z.b. 8924 herauskopieren. :mrgreen:

nur wie kann ich diese Position finden :?:
Habe am Anfang gedacht einfach mal die Schritte bis zu 8924 zählen und dann herausholen.

Delphi-Quellcode:
copy(Stringliste.Strings[x],24,4);
Nur das funkt natürlich nicht. :wall:

Wie find ich die Position wenn Tab-Schritte dazwischen sind??

Kedariodakon 2. Mär 2005 16:41

Re: Txt Datei Tabulatorschritte --> Stringlist
 
Ein Tab ist ein Zeichen und zwar #9 und danach kannst du mit Delphi-Referenz durchsuchenPos und Delphi-Referenz durchsuchenPosEx suchen...


Bye

Edit:
mit Delphi-Referenz durchsuchenCopy kannst du dann das dazwischen in einen String kopieren...
Edit2:
KEnnst du ja schon wie ich seh :zwinker:

Schuster 2. Mär 2005 16:49

Re: Txt Datei Tabulatorschritte --> Stringlist
 
Thx
werds morgen mal probieren
:dp:

mwiesbau 2. Mär 2005 17:25

Re: Txt Datei Tabulatorschritte --> Stringlist
 
hallo versuch mal

Delphi-Quellcode:

for i:=0 to stringliste.count-1 do    // schleife zum durchlaufen der gesamten stringliste
   begin
      tempstringlist.delimiter:=#9;   // setzt als trennzeichen den tabulator
      tempstringlist.delimitedtext(stringliste[i]);     //Nun hast du 5 Spalten über die du auf die einzelnen werte zugreifen kannst
     showmessage(tempstringlist[3]);  //zeigt dir die postleitzahl an.
  end;

Schuster 3. Mär 2005 10:19

Re: Txt Datei Tabulatorschritte --> Stringlist
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von mwiesbau
hallo versuch mal

Delphi-Quellcode:

for i:=0 to stringliste.count-1 do    // schleife zum durchlaufen der gesamten stringliste
   begin
      tempstringlist.delimiter:=#9;   // setzt als trennzeichen den tabulator
      tempstringlist.delimitedtext(stringliste[i]);     //Nun hast du 5 Spalten über die du auf die einzelnen werte zugreifen kannst
     showmessage(tempstringlist[3]);  //zeigt dir die postleitzahl an.
  end;

Also irgendwie komm ich mit dieser txt Datei nicht zurecht. :wall:
@mwiesbau
Dein Code funkt leider nur Teilweise, da wenn der Ort xxx am xxx lautet wird in der Plz z.b am angezeigt.
Siehe Anhang.

Ich steh voll an Bitte um Hilfe. :pale:
:wiejetzt:

mwiesbau 3. Mär 2005 11:47

Re: Txt Datei Tabulatorschritte --> Stringlist
 
ok dann musst du dass ganze so lösen

Delphi-Quellcode:
for i:=0 to stringliste.count-1 do    // schleife zum durchlaufen der gesamten stringliste
   begin
      tempstringlist.delimiter:=#9;   // setzt als trennzeichen den tabulator
      tempstringlist.delimitedtext(stringliste[i]);     //Nun hast du 5 Spalten über die du auf die einzelnen werte zugreifen kannst
     try
       begin
         strtoint(tempstringlist[3]);  //zeigt dir die postleitzahl an.
         HIER DEIN CODE ZUM EINFÜGEN IN DIE LISTE
       end;  
     except  //Wenn die convertierung in Integer fehlegeschlagen weil keine zahl dann
       begin
         (tempstringlist[4])   //Nimmt die nächste spalte
          HIER DEIN CODE ZUM EINFÜGEN IN DIE LISTE
       end;
end;

hoffe es funktioniert und du weisst was ich meine

Schuster 3. Mär 2005 11:59

Re: Txt Datei Tabulatorschritte --> Stringlist
 
Habs auch grad so gelöst :)

Delphi-Quellcode:
for x:=2 to Meinestringlist.count-1 do    // schleife zum durchlaufen der gesamten stringliste
   begin
      templist.delimiter:=#9;   // setzt als trennzeichen den tabulator
      templist.delimitedtext:=(trim(Meinestringlist[x]));     //Nun hast du 5 Spalten über die du auf die einzelnen werte zugreifen kannst
      Stringgrid1.RowCount:=x;
      try
          strtoint(templist[3]);
          StringGrid1.Cells[0,x]:=(templist[3]);  //postleitzahl
          StringGrid1.Cells[1,x]:=(templist[4]);  //Ort
      except
          try
              strtoint(templist[4]);
              StringGrid1.Cells[0,x]:=(templist[4]);
              StringGrid1.Cells[1,x]:=(templist[5]);
          except
              try
                  strtoint(templist[5]);
                  StringGrid1.Cells[0,x]:=(templist[5]);
                  StringGrid1.Cells[1,x]:=(templist[6]);
              except
                  try
                      strtoint(templist[6]);
                      StringGrid1.Cells[0,x]:=(templist[6]);
                      StringGrid1.Cells[1,x]:=(templist[7]);
                  except
                      StringGrid1.Cells[0,x]:=(templist[7]);
                      StringGrid1.Cells[1,x]:=(templist[8]);  
                  end;
              end;
          end;
      end;
  end;

Schuster 3. Mär 2005 14:13

Re: Txt Datei Tabulatorschritte --> Stringlist
 
Mein nächstes Problem ist das zwar nun die PLZ stimmt aber der Ort Wenn er xxx am xx lautet.

Wenn ich Ort mit
Delphi-Quellcode:
StringGrid1.Cells[1,x]:=(templist[4]);  //Ort
aufrufe wird wieder nur xx ausgegeben wird da er ja beim einlesen in templist bei jeden
leerzeichen #9 einfügt.

Gibts da nicht etwas einfacheres??
Da ja bei meiner Ursprüngliche txt Datei die Strings mit #9 ja schon geteilt sind??

mwiesbau 3. Mär 2005 14:42

Re: Txt Datei Tabulatorschritte --> Stringlist
 
also das müsste auch ohne

Delphi-Quellcode:
temstrinlist.delimiter:=#9
funktionieren, nimm mal diese zeile raus
mit dieser funktion legst du ein explizites trennzeichen deines textes fest
welches du aber nicht brauchst wenn dein text durch leerzeichen oder tabulatoren getrennt ist.

eine möglichkeit wäre noch die temstringlist durchzufählen und die letzen zwei einträge auszulesen, da wie mir scheint der ort immer der letzte eintrag und die postleitzahl immer der vorletzte eintrag ist.

Delphi-Quellcode:
StringGrid1.Cells[1,x]:=(templist[templist.count-1]);  //Ort
StringGrid1.Cells[1,x]:=(templist[templist.count-2]);  //PLZ


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