Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism Problem bei ReadBuffer ;( (https://www.delphipraxis.net/27568-problem-bei-readbuffer-%3B.html)

Curse4Life 12. Aug 2004 10:16


Problem bei ReadBuffer ;(
 
Hi, ich habe jetzt seit ein paar Tagen .net und arbeite jetzt ein wenig damit.
So wollte ich eine alte Unit von mir in einer VLC Anwendung verwenden, hat auch vieles geklappt, aber bei dieser Procedure bekomme ich einen Fehler:

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;

Durch ausschneiden compilieren, ausschneiden kompilieren habe ich den Fehler gefunden, es liegt an dieser Zeile:
Delphi-Quellcode:
fs.ReadBuffer(S[1], fs.Size);

Die Fehlermeldung lautet:
[Error] BIB_Dateibearbeitung.pas(253): String element cannot be passed to var parameter


Ich hoffe jemand kann mir helfen


mfg
Curse4Life

neolithos 12. Aug 2004 10:22

Re: Problem bei ReadBuffer ;(
 
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.Read(PChar(S)^, fs.Size);
   finally
      fs.Free;
   end;

   // Ersetzen des Textes
   S := StringReplace(S, SearchString, replaceString, [rfIgnoreCase]);
   fs := TFileStream.Create(FileName, fmCreate);
   try
      fs.Write(PChar(S)^, Length(S));
   finally
      fs.Free;
   end;
end;
Ich würde das so gestalten. Denn hinter einen Long-String steht eigentlich ein PChar.

Curse4Life 12. Aug 2004 11:19

Re: Problem bei ReadBuffer ;(
 
Deine Variante funktioniert leider nicht! ;(

neolithos 12. Aug 2004 11:30

Re: Problem bei ReadBuffer ;(
 
Was funktioniert wie nicht, etwas genauer bitte?

Curse4Life 12. Aug 2004 11:38

Re: Problem bei ReadBuffer ;(
 
Diese Fehlermeldung bei der Zeile mit dem Read

[Error] BIB_Dateibearbeitung.pas(240): Invalid typecast


mfg

neolithos 12. Aug 2004 12:07

Re: Problem bei ReadBuffer ;(
 
Kann ich leider mit Delphi7 Prof nicht nachvollziehen.

Delphi-Quellcode:
  aStream.Read(PChar(Result)^, dwLen);
Result : String;
dwLen : Cardinal;

Funktioniert einwandfrei. :gruebel:

Welche Delphiversion?

Curse4Life 12. Aug 2004 12:08

Re: Problem bei ReadBuffer ;(
 
8, .net eben :)


mfg

neolithos 12. Aug 2004 14:58

Re: Problem bei ReadBuffer ;(
 
Da geht es natürlich nicht!

-> Delphiversion angegeben!!!

Mit D8 kenne ich mich nicht aus! Das einzige was ich mache ich C#.

Schau mal nach der Convert-Klasse. Binärstrom.

sakura 12. Aug 2004 15:05

Re: Problem bei ReadBuffer ;(
 
Zitat:

Zitat von neolithos
-> Delphiversion angegeben!!!

Hm, ist doch die Delphi.NET Sparte :roll:

...:cat:...

Dannyboy 12. Aug 2004 15:20

Re: Problem bei ReadBuffer ;(
 
Zitat:

fs := TFileStream.Create(FileName, fmOpenread or fmShareDenyNone);
Muss die Datei in diesem Fall nicht zum Schreiben geöffnet sein? :gruebel:
Ich kenne mich nur mit read und write aus, jedoch nicht mit readBuffer
und writeBuffer.
DANNYBOY


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr.
Seite 1 von 2  1 2      

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