Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stringblock aus Datei auslesen (https://www.delphipraxis.net/1235-stringblock-aus-datei-auslesen.html)

foxy 4. Nov 2002 11:48


Stringblock aus Datei auslesen
 
sers leute
also ich habe folgendes problem ... ich habe 2 strings die ich angebe nach denen sucht mein programm in einer textdatei mit 9000 zeilen gibt diese Zeilen aus inder er diese Strings gefunden hat jetzt zu meinem Probelm
Also ich will zwischen den ausgegeben Zeilen die dazwsichenligeneden auch noch ausgeben
ich habe das so geschrieben bisher
Delphi-Quellcode:
with dbmemo1 do
   scrollBars:=SSboth;
   ReSet(f);    //Datei zum Lesen öffnen
   DBMemo1.Clear;     //Memo leeren
   r1:=0;
   ZNr:=0;
   Repeat
    ZNr:=ZNr+1;
    ReadLn(f,Zeile); //Zeile lesen
    If Pos(EditZeit.Text,Zeile)>0 Then //wenn String in Zeile gefunden
    begin
      DBMemo1.Lines.Add( 'Zeilennr.: '+IntToStr(ZNr)+': '+Zeile);
      repeat
      r1:=r1+1;
      ZNr:=ZNr+1;
      Readln(f,Zeile);
      DBMemo1.Lines.Add( 'Zeilennr.: '+IntToStr(ZNr)+': '+Zeile );
      [color=red]
      //hier sollte er nun alle dazwischenliegenden Zeilen auch ausgene
      //nur er bricht wenn er eine Zeile hat ab was iss das er bricht
      //die schleife einfach ab[/color]
     
      p:=pos(';',DBmemo1.Lines.Strings[r1]);
      while (p>0) do
        begin
        if p-1 >0 then
        begin
          s1:=copy(DBmemo1.Lines.Strings[r1],1,p-1);
          showmessage(s1);
        end;
        delete(DBmemo1.Lines.Strings[r1],1,p);
        p:=pos(';',DBmemo1.Lines.Strings[r1]);
        end;
     until Pos(Editzeit.Text,Zeile)=0;
     end;
     If Pos(EditZeit2.Text,Zeile)>0 then
       DBMemo1.Lines.Add( 'Zeilennr.: '+IntToStr(ZNr)+': +'Zeile );
       Until EOF(f);
Bidde bidde um hilfe bei fragen noch einfach stellen dann erklär ich was ihr nich versteht zum problem :bouncing4:

foxy 5. Nov 2002 10:30

keiner weis einen Rat :( in 4 Foren nicht was soll ich nur machen??

Christian Seehase 5. Nov 2002 10:40

Moin Foxy,

ich hab' Dein Problem irgendwie nicht so ganz verstanden.

Wodurch kennzeichnet sich die erste/letzte Zeile des Blockes die ausgegeben werden soll?

Bist Du mal im Einzelschritt durch die Schleife gegangen, und hast Dir mal die Werte angesehen? Muss, z.B., die Schleife abbrechen, weil die nächste schon die Abbruchbedingung enthält?

MrSpock 5. Nov 2002 11:04

Hallo foxy,

auf die Schnelle fällt mir auf, dass du auf DBmemo1.Lines.Strings[r1] zugreifst. Der String Array fängt bei 0 an, r1 hat aber beim ersten Schleifendurchlauf bereits den Wert 1, so dass das Programm hier eigentlich abstürzen müsste.

foxy 5. Nov 2002 11:37

2002- 6-11 0: 0: 7;2146;2145;2146;2143;2145;2159;217;2157
so sieht das teil aus

Ich möchte nun alles wegschneiden bis zum 2ten ";" z.B., und dann der string bis zum nächsten ";" soll eine Variable werden.
das heist wenn ich sage wert 4 dann soll der bis zum 4ten ";" gehen diesen wert holen und dann wie du mir schon eben geholfen hast in die datenbank laden so habe ich das mal vor .. =)


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