Einzelnen Beitrag anzeigen

Lenny15

Registriert seit: 5. Jan 2007
10 Beiträge
 
#1

WriteFile schreibt Nonsense in Datei

  Alt 5. Aug 2007, 20:46
Hi ,

Ich wollte eine Logdatei erstellen und dort Aktionen aufzeichnen, die so im Programmverlauf passieren.
Ich wollte dies explizit mit der Windows-API erreichen. Ich weiss, dass es auch AssignFile(), ReWrite() und Writeln() dafür gibt.
Aber etwas mit der Winows-API umgehen zu können schadet ja nicht, oder?

So habe ich es probiert:

Delphi-Quellcode:
procedure LogEvent(lpEventStr: PAnsiChar);
var
   logFilePath : Pchar;
   hFile : Thandle;

   ofStruct : _OFSTRUCT;
   BytesWritten : DWORD;
begin
  logFilePath := Pchar(ExtractFilePath(ParamStr(0))+'eventlog.txt');
  hFile := OpenFile(logFilePath,ofStruct, OF_READWRITE OR OF_CREATE);
  If hFile <> INVALID_HANDLE_VALUE Then
    begin
      SetFilePointer(hFile,0,nil,FILE_END);
      WriteFile(hFile,lpEventStr,Length(lpEventStr),BytesWritten,nil);
    end;
    CloseHandle(hFile);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  LogEvent('Start');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  LogEvent('Button klicked');
end;
Wenn ich nun das programm starte und ein paar mal auf den Button klicke steht am Ende soetwas in der Datei:
"�D�D"
Die Fragezeichen sind diese Kästchen.
Der Hexeditor sieht folgende Bytes in der Datei:
FC DB 44 00 6C F7 12 00 FA DB 44 00 6E E5

Weiss jemand wo der Fehler liegt und kann ihn mir bitte zeigen?
Ich bin etwas verwirrt, und weiss nich wo ich suchen soll.
  Mit Zitat antworten Zitat