Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi readbuffer problem ('verzweifle') (https://www.delphipraxis.net/67665-readbuffer-problem-verzweifle.html)

poltergeistx 18. Apr 2006 11:41


readbuffer problem ('verzweifle')
 
so, also ich wollt grad mal fragen, ob das so richtig iss , denn es geht nämlich irgendwie nicht ...


Delphi-Quellcode:
procedure BIB_FileReplaceString(FileName, searchstring, replacestring: string);
var
  fs: TFileStream;
  S: string;
begin
   // Erstellen der Variablen für die Datei
   fs := TFileStream.Create(FileName, fmOpenread or fmShareDenyNone);
   try
      SetLength(S, fs.Size);
      fs.ReadBuffer(S[1], fs.Size);
   finally
      fs.Free;
   end;

   // Ersetzen des Textes
   S := StringReplace(S, SearchString, replaceString, [rfIgnoreCase]);
   fs := TFileStream.Create(FileName, fmCreate);
   try
      fs.WriteBuffer(S[1], Length(S));
   finally
      fs.Free;
   end;
end;
[edit=Luckie]Sprache korrigiert. Mfg, Luckie[/edit]

marabu 18. Apr 2006 11:55

Re: readbuffer problem ('verzweifle')
 
Einfach öfter mal aufrufen - irgendwann wird es schon "gehen".

Sieht garnicht danach aus - warum hast du unter .NET gepostet? Wenn du die Datei für konkurrierenden Zugriff freigibst, dann vielleicht besser mit fmShareDenyWrite. Das SetLength() würde ich aus dem Ressourcen-Schutzblock heraus lassen. Ressourcenschonend ist der Code auch nicht gerade, aber laufen sollte er - vom Augenschein her.

Wie hast du denn festgestellt, dass er nicht geht?

Grüße vom marabu

poltergeistx 18. Apr 2006 13:19

Re: readbuffer problem ('verzweifle')
 
hmm ..
ich habe mich geirrt mit net .. lol

ich habe mich verklickt kann man so sagen,
naja also das mit dem nochmal aufrufen klappt nicht :[

aber ich werds probieren bisses klappt, für jede weitere hilfe bin ich dankbar

H4ndy 18. Apr 2006 15:58

Re: readbuffer problem ('verzweifle')
 
Ich sehe jetzt auf den ersten Blick auch kein Problem im Quelltext.
(vielleicht mal nur Read und Write benutzen anstatt von Read/WriteBuffer).

Vielleicht kannst du das aber komplett über den Haufen werfen und stattdessen
einen TStringStream benutzen (Unit Classes). Damit kannst du direkt im "Text-Modus"
auf eine Datei zugreifen.

Hawkeye219 18. Apr 2006 18:13

Re: readbuffer problem ('verzweifle')
 
Hallo poltergeistx,

möchtest Du vielleicht alle Vorkommen des Suchtextes ersetzen? Falls ja, dann mußt Du das beim Aufruf der Funktion StringReplace angeben:

Delphi-Quellcode:
S := StringReplace(S, SearchString, replaceString, [rfIgnoreCase, rfReplaceAll]);
Gruß Hawkeye

poltergeistx 18. Apr 2006 18:15

Re: readbuffer problem ('verzweifle')
 
kk
ich werds denn mal testen jetzt :]
ich habs noch immer net hinbekommen ^^

shmia 18. Apr 2006 18:29

Re: readbuffer problem ('verzweifle')
 
Du denkst nur, dass das Programm nicht funktioniert!
In Wirklichkeit funktioniert es aber; du kannst es nur nicht erkennen.
(der berüchtigte "Tomaten auf den Augen Effekt" :zwinker: )

Du musst dir folgende Dinge anzeigen lassen:
Der String vorher, der String nachher, der Inhalt von "Searchstring" und "replacestring".
Dann lässt sich erkennen, WAS da nicht funktionieren soll.

poltergeistx 18. Apr 2006 19:18

Re: readbuffer problem ('verzweifle')
 
.-.

poltergeistx 18. Apr 2006 19:21

Re: readbuffer problem ('verzweifle')
 
Zitat:

Zitat von shmia
Du denkst nur, dass das Programm nicht funktioniert!
In Wirklichkeit funktioniert es aber; du kannst es nur nicht erkennen.
(der berüchtigte "Tomaten auf den Augen Effekt" :zwinker: )

Du musst dir folgende Dinge anzeigen lassen:
Der String vorher, der String nachher, der Inhalt von "Searchstring" und "replacestring".
Dann lässt sich erkennen, WAS da nicht funktionieren soll.

ok ich bin dumm :)

danke danke danke ^^ ich habe den code irgendwie so gemacht, dass das programm nicht mehr 'abstürtzt'(respektiv funktioniert ^^) doch jetzt geht das ganze wieder tiptop thx :]


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