Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Strings zerlegen (https://www.delphipraxis.net/25842-strings-zerlegen.html)

magoo2002de 13. Jul 2004 16:38


Strings zerlegen
 
Hallo!
Ich weiß, dass es dieses Thema schon häufig gab, doch leider habe ich für mein Problem noch keine Lösung gefunden.
Und zwar lese ich eine Textdatei in ein Memo ein. Jede Zeile ist so aufgebaut:
Code:
{1, "Text"[TABULATOR][TABULATOR], ""}
Nun möchte ich das Wort zwischen den ersten Anführungszeichen auslesen. Das Auslesen geht ja mit Copy und Pos. Aber nun habe ich das Problem, das nicht weiß, wie ich die Länge für den Copy-Befehl hearusbekomme.
Vielen Dank für eure Hilfe!

dizzy 13. Jul 2004 16:45

Re: Strings zerlegen
 
pos + [F1]

Wurde aber schon zu genüge hier behandelt -> Die Suche dürfte üppig Ergebnisse liefern ;)

magoo2002de 13. Jul 2004 16:50

Re: Strings zerlegen
 
Ich habe ja schon gesucht. Mein Problem ist folgendes: Wie bekomme ich das mit den Tabulator hin? Ich meine, in der Textdatei steht nicht [TABULATOR] sondern es handelt sich um Tabulator.

alcaeus 13. Jul 2004 16:59

Re: Strings zerlegen
 
Der Tabulatorsprung hat den ASCII-Code 9 (korrigiert mich bitte falls ich falsch liege). Deshalb:
Delphi-Quellcode:
Pos(9, StringVariable)
Greetz
alcaeus

shmia 13. Jul 2004 17:01

Re: Strings zerlegen
 
Zitat:

Zitat von magoo2002de
Mein Problem ist folgendes: Wie bekomme ich das mit den Tabulator hin? Ich meine, in der Textdatei steht nicht [TABULATOR] sondern es handelt sich um Tabulator.

Gehört der Tabulator zu den Nutzdaten oder dient er nur als Datentrenner ?
Im letzteren Fall kann man ihn mit StringReplace (oder einer effizienteren Procedure) einfach löschen.
Delphi-Quellcode:
s := StringReplace(s, #9, [rfReplaceAll]);

ibp 13. Jul 2004 17:08

Re: Strings zerlegen
 
...
Delphi-Quellcode:
 s:='1, "Text"[TABULATOR][TABULATOR], ""';
  repeat
    position:=pos('"',s);
    if position>0 then
    begin
      delete(s,1,position);
      position:=pos('"',s);
      text:=copy(s,1,position-1);
      delete(s,1,position);
    end;
  until position<1;

[edit] fehler beseitigt... [/edit]

magoo2002de 13. Jul 2004 17:14

Re: Strings zerlegen
 
Vielen Dank. Es hat geklappt!

choose 13. Jul 2004 17:16

Re: Strings zerlegen
 
Hallo

wenn Du häufiger mit Stringzerlegungen zu tun hast, könnte sich die Mühe lohnen, [dp]reguläre Ausdrücke[/dp] zu erlernen. Das Extrahieren des Textes sowie die Ausgabe der ersten Zahl könnte dann zB so aussehen:
Delphi-Quellcode:
with RegExp('(\d+).*?\"([^\"]*)\"') do
  if Exec({1, "Text"[TABULATOR][TABULATOR], ""}') then
    ShowMessage('Number:%d, String:%s', [Match[1], Match[2]]);


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