Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi WriteFile (https://www.delphipraxis.net/16926-writefile.html)

Pseudemys Nelsoni 25. Feb 2004 18:42


WriteFile
 
hoi,

ich muss in einert dll einen text durch einen anderen ersetzen, ich MUSS es mit "WriteFile" machen, kann mir jemand sagen was ich da alles übergeben muss?

Zitat:

BOOL WriteFile(

HANDLE hFile, // handle to file to write to
LPCVOID lpBuffer, // pointer to data to write to file
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesWritten, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // pointer to structure needed for overlapped I/O
);

damit kann ich irgendwie nict viel anfangen, ich will nur z.b das wort "hi" durch "jo" ersetzen, jemand ne idee?

Christian Seehase 25. Feb 2004 19:12

Re: WriteFile
 
Moin Pseudemys Nelsoni,
  • hFile ist das Handle der Datei, dass die Datei identifiziert, wenn Du sie, z.B. mit Hier im Forum suchenCreateFile öffnest.
  • lpBuffer ist ein Pointer, der auf die Daten zeigt, die Du schreiben willst, bei einem String bietet sich also ein PChar Wert an.
  • nNumberOfBytesToWrite gibt, wie der Name ja schon sagt, an, wieviele Zeichen geschrieben werden sollen.
  • lpNumberOfBytesWritten ist eine Variable, die nach der Ausführung von WriteFile die Anzahl der tatsächlich geschriebenen Zeichen angibt. Sollte im Normalfalle mit nNumberOfBytesToWrite übereinstimmen.
  • lpOverlapped kannst Du für den gegebenen Fall auf nil setzen.

Was mich aber noch interessieren würde:
Warum MUSS es WriteFile sein. Beispielsweise benutzt TFileStream intern ja auch die API Funktionen.

Pseudemys Nelsoni 26. Feb 2004 04:00

Re: WriteFile
 
Hallo Christian,

Da ich zwar kein nonVCL kann, hab ich vor mein patch ohne dialoge/events etc zu machen, auf den click der exe soll ledeglich der code ausgeführt werden und das ist ja nicht so schwer, daher kann ich wenn ich die vcl weglasse kein BlockRead/BlockWrite verwenden.
Danke für die übersetzung, kannst du mir sagen, wie ich "lpBuffer" auf die daten zeigen lasse?

mfg

Luckie 26. Feb 2004 04:16

Re: WriteFile
 
Zitat:

Zitat von Pseudemys Nelsoni
daher kann ich wenn ich die vcl weglasse kein BlockRead/BlockWrite verwenden.

Und warum nicht? Beide Prozeduren sind in der Unit Systems implementiert, die sowieso bei jedem Delphi Projekt eingebunden wird.

Pseudemys Nelsoni 26. Feb 2004 05:38

Re: WriteFile
 
dachte nur "windows" wird eingebunden. wozu systems?

Chewie 26. Feb 2004 09:27

Re: WriteFile
 
Die Unit heißt System nicht Systems ;)

Sie wird vom Compiler immer eingebunden, egal ob angegeben oder nicht. Aber nonVCL heißt, wie der Name schon sagt, dass die VCL nicht benutzt wird. Dazu gehören Units wie Forms, Dialogs, Commctrls etc., aber beispielsweise die RTL, die u.a. aus der SysUtils besteht, gehört auch nicht zu der VCL.
Und schließlich ist das Ziel der nonVCL-Programmierung ja nicht, auf Teufel komm raus auf die VCL zu verzichten, sondern die Programme klein zu halten.

Luckie 26. Feb 2004 14:26

Re: WriteFile
 
Die Unit System enthält eben Grundfunktionen, die nicht im Compiler "einprogrammiert" sind. Da müsste auch der Speichermanager drinne stecken, ist allerdings nur eine Vermutung.


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