Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#8

Re: Mit SetFilePointer zum Ende - n springen, wie?

  Alt 8. Jun 2008, 17:01
erstens ist mein Englich auch nicht sonderlich gut, aber dennoch kann/versuch ich es zu lesen ... notfalls gibt's ja noch Wörterbücher und Übersetzer


Zitat:
Ich habe am Ende der Datei eine 17 platziert,
und wie hast du das gemacht?


zu OpenFile:
Zitat:
Only use this function with 16-bit versions of Windows. For newer applications, use the CreateFile function.
zu Deutsch: verwende MSDN-Library durchsuchenCreateFile, da OpenFile eine veraltete Funktion ist (Windows 3.1 und Co.)



PS: dieses geht bei mir:
Delphi-Quellcode:
type TByteArr = array[0..1] of Byte;

function GetValue: TByteArr;
var
  hOpn: THandle;
  dwBytesRead: Cardinal;
  mBuf: TByteArr;
begin
  // 'ne Testdatei mit "17" am Ende erzeugen
  hOpn := CreateFile('test.dat', GENERIC_WRITE, 0, nil, CREATE_ALWAYS, 0, 0);
  if hOpn <> INVALID_HANDLE_VALUE then
  begin
    mBuf[0] := 8;
    mBuf[1] := 9;
    WriteFile(hOpn, mBuf, 2, dwBytesRead, nil);
    mBuf[0] := 1;
    mBuf[1] := 7;
    WriteFile(hOpn, mBuf, 2, dwBytesRead, nil);
    CloseHandle(hOpn);
  end;
  mBuf[0] := 0; // nur damit nicht noch die 17 vom Speichern drinsteht,
  mBuf[1] := 0; // da beim Lesen dwBytesRead nicht geprüft wird.


  // Auslesen
  hOpn := CreateFile('test.dat', GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
  if hOpn <> INVALID_HANDLE_VALUE then
  begin
    SetFilePointer(hOpn, -2, nil, FILE_END);
    ReadFile(hOpn, mBuf, 2, dwBytesRead, nil);
    showmessage(inttostr(mBuf[0]) + inttostr(mBuf[1]));
    result := mBuf;
    CloseHandle(hOpn);
  end;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat