Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi seek in textdateien (https://www.delphipraxis.net/24147-seek-textdateien.html)

ltsavar 16. Jun 2004 12:47

Re: seek in textdateien
 
Zitat:

Zitat von Spezi1980

Der Typ String ist dann je nach gesetztem Compilerschalter {$H+}/{$H-} ein Shortstring oder ein Ansistring.

Du kannst also problemlos alles in einen String einlesen und durchforsten.

TStrings ist eine art dynamisches Stringarray, in dem mehrere Strings gespeichert werden und für deinen fall eher weniger zu gebrauchen, da hier beim laden auch das carriage return auswertet wird.

Gruß Robert

Danke. Ich glaub das war die Information die ich gebraucht hab.
Wenn ich alles in einen String packen kann ist das super...

dann noch kurz ne ander frage...gibts ne möglichkeit nen float varibale in nen integer zuverwandeln?
so a la floattoint (gibts ja leider nicht)...

Gruß Ingo

Ultimator 16. Jun 2004 12:51

Re: seek in textdateien
 
da müsstest du vielleicht trunc nehmen, aber das schneidet die Nachkommastellen ab, glaub ich...

lume96 16. Jun 2004 13:00

Re: seek in textdateien
 
Zitat:

Zitat von ltsavar

ich hatte das halt so probiert:
assignfile(f,Edit1.text);
reset(f);
read(f,readst);
.
.
.

und das geht ja so nicht...

Gruß Ingo

Hab's zwar selbst nicht getestet, wüsste aber nicht, warum das nicht funktionieren sollte.

Ich hätte nämlich genau das getan, in etwas so :
Delphi-Quellcode:
procedure TForm1.CopyTextFile(const InFName,OutFName,findstr,insertstr : string);
var
   F1,
   F2: TextFile;
   Ch: Char;
   tmpstr : string;
   found : boolean;
begin

   AssignFile(F1, InFName);
   AssignFile(F2, OutFName);
   found := false;
   tmpstr := '';

   try
      Reset(F1);
      Rewrite(F2);

      
      while not Eof(F1) do
      begin
         // einlesen eines Chars
         Read(F1, Ch);
         

         if length(tmpstr) < length(findstr) then
            tmpstr := tmpstr + Ch
         else
            if tmpstr = findstr then
               found := true
            else
               tmpstr := copy(tmpstr,2,length(tmpstr)-1) + ch;
         
         //einfügen des textes
         if found then
         begin
            Write(F2,insertstr);
            found := false;
            tmpstr := '';
         end;
         // Char in Resultatdatei schreiben
         Write(F2, Ch);
      end;
   finally
      CloseFile(F2);
      CloseFile(F1);
   end;

end;
Aufruf wie folgt :
Delphi-Quellcode:
CopyTextFile('Ausgangsdateiname','Ergebnissdateiname','zu findende String','hinzuzufügende String');
Da hier jedes Zeichen separat eingelsen und wieder geschrieben wird, sollte die Zeilenlänge eigentlich keine Rolle spielen. (Wie gesagt, nicht getestet.)

Gruss Lutz

ltsavar 17. Jun 2004 10:55

Re: seek in textdateien
 
Zitat:

Zitat von Ultimator
da müsstest du vielleicht trunc nehmen, aber das schneidet die Nachkommastellen ab, glaub ich...

Genau das hab ich gebraucht. Danke..

Man man ich hab so ewig lang kein Delphi mehr gecoded dass ich das alles vergessen hab...

Gruß Ingo

ltsavar 17. Jun 2004 10:58

Re: seek in textdateien
 
Zitat:

Zitat von lume96

Hab's zwar selbst nicht getestet, wüsste aber nicht, warum das nicht funktionieren sollte.

Ich hätte nämlich genau das getan, in etwas so :


Aufruf wie folgt :
Delphi-Quellcode:
CopyTextFile('Ausgangsdateiname','Ergebnissdateiname','zu findende String','hinzuzufügende String');
Gruss Lutz

Naja ich brauchte dass schon in einem String weil ich da mehr mals was schreiben,löschen,einfügen will. Sonst wäre deine Möglichkeit auch gegangen.
Und auch das mit TStrings wäre nichts für mich weil dass ja wie gesagt nur eine lange Zeile ist in der Datei.

Trotzdem Danke für alle Antworten.

Gruß Ingo


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr.
Seite 2 von 2     12   

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