Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bestimmte Stellen aus TXT lesen (https://www.delphipraxis.net/15677-bestimmte-stellen-aus-txt-lesen.html)

Uncle Cracker 2. Feb 2004 16:08


Bestimmte Stellen aus TXT lesen
 
Wie kann ich bestimmt Stellen aus einer Textdatei lesen?

D.h. ich möcht aus dem folgendem Beispiel die ID und dann den Link auslesen:

<?php
$ids[299] = "http://www.test.de/Test.rar";
$ids[300] = "http://www.test.de/Test1.rar";
$ids[301] = "http://www.test.de/Test2.rar";
?>


Ich möchte zwar danach dann noch Daten schreiben, also neue IDs anfügen, doch das wird ja dann nicht mehr so schwer, wenn man überhaupt weiß wie man die einzelnen Dinge ließt.

Vielleicht weiß jemand, wie das geht oder hat einen Vorschlag, wie man das machen könnte.


:love: Danke UC

Ratte 2. Feb 2004 18:54

Re: Bestimmte Stellen aus TXT lesen
 
Hi Uncle Cracker,

probier mal eine Zeile einzulesen und dann die 6. bis 8. Stelle und die 13. bis 2 Zeichen vor ende auszulesen. Die Stringzerlegung könnte so aussehen:
Delphi-Quellcode:
ID[1]:=zeile[6];
ID[2]:=zeile[7];
ID[3]:=zeile[8];
FOR i:= 13 to lenght(zeile)-2 do link[i-12]:=zeile[i];
So ungefähr könnte es aussehen. (nicht geprüft)

Ratte

IcyT 2. Feb 2004 19:17

Re: Bestimmte Stellen aus TXT lesen
 
Das ist aber ziemlich undynamisch, denn wenn die ID jetzt z.b. 4 Stellen hat funktioniert deine Methode schon nicht mehr.
Ich würde lieber jedes zeichen durchgehen und dann von [ bis ] lesen und dann später von " bis ". Dann ist man nämlich auf der sicheren Seite, höchstens das ganze Schema wird verändert.

Neg 2. Feb 2004 20:55

Re: Bestimmte Stellen aus TXT lesen
 
Hmm.. Ein klassischer Fall einer regulären Grammatik, die man mit einem Scanner verarbeiten könnte. Aber ich nehme mal an, dass du darüber noch nichts gelernt hast, oder? (Hab's ja selbst erst dieses Semester an der Uni gehabt.)

Die Idee ist im Grunde recht einfach. Du liest den String Zeichen für Zeichen ein und merkst dir stets den aktuellen "Zustand" (z.B. "'$' gelesen, 'i' erwartet"). Je nach dem in welchem Zustand du gerade bist, verarbeitest du aktuelle Zeichen anders und springst gegebenfalls in einen anderen Zustand.
Kannst ja mal ein wenig googlen, oder so.
[google]Scanner reguläre Grammatik[/google]
Bei Google suchenZustandsautomat

choose 2. Feb 2004 20:57

Re: Bestimmte Stellen aus TXT lesen
 
Für solche Fälle verwende ich gerne [dp]reguläre Ausdrücke[/dp], so dass der Code zum Ausgeben aller URLs mitsamt ihrer IDs in Dialogboxen wie folgt aussehen könnte:
Delphi-Quellcode:
with RegExp('\[(\d+)\]\s?=\s?"(.*?)"') do
  if Execute(AString) then
  repeat
    ShowMessage(Format('Id: %d, Url: %s', [Match[1], Match[2]]);
  until not ExecuteNext;

Uncle Cracker 3. Feb 2004 22:41

Re: Bestimmte Stellen aus TXT lesen
 
Irgendwie bin ich zu doof, den Quelltext von dir umzusetzten :roll:

Was ist denn RegExp, Execute und AString bzw. wie kann ich das einsetzten? Ich habe das irgendwie leider nicht hinbekommen.

Vielleicht kann mir nochmal jemand helfen.


:love: Danke UC

choose 4. Feb 2004 08:56

Re: Bestimmte Stellen aus TXT lesen
 
Hallo UC,

die Funktion RegExp ist von mir und erstellt ist einen Wrapper, um eine Implementierung von regulären Ausdrücken unter Delphi, der -mit einer Referenzzählung ausgestattet- die benötigten Ressourcen selbststädnig wieder freigibt, und einige vereinfachte Methoden anbietet. Grundsätzlich arbeitet er aber ähnlich zu den meisten gängigen Implementierungen.

[dp]reguläre Ausdrücke[/dp] sind nicht direkt in Delphi implementiert, Du solltest folglich nach einer geeigneten Bibliothek suchen. AString ist der String, den Du parsen möchtest, und die "kryptischen Zeichen" entsprechen dem tatsächlichen Ausdruck.


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