![]() |
Frage zu TFileStream
Hallo, ich möchte gerne ein Datum ans ende meiner Datei hängen aber es will nicht so recht klappen, aber warum nicht?
Dies hier wird von einer zweiten exe ausgeführt :
Delphi-Quellcode:
und dann zum auslesen direkt in der test.exe
begin
with TFileStream.Create('test.exe',fmOpenWrite) do begin Seek(-SizeOf(TDateTime),soFromEnd); Write(Now, SizeOf(TDateTime)); Free; end; end;
Delphi-Quellcode:
var
myDate : TDateTime; begin with TFileStream.Create('test.exe',fmShareDenyNone) do begin Seek(-SizeOf(TDateTime),soFromEnd); Read(myDate,SizeOf(TDateTime)); Free; end; Showmessage(DateTimeToStr(myDate)); end; Rufe ich die test.exe auf, bevor ich da was reingeschrieben hab, dann zeigt mir das showmessage : 30.12.1899 an....ist ja auch klar, weil am ende der Datei nur nullen stehen. Schreibe ich aber was dran und führe das Programm dann nochmal auf gibts "Ungültige Gleitoperation". Aber was mache ich falsch? |
Re: Frage zu TFileStream
Zitat:
Delphi-Quellcode:
begin
with TFileStream.Create('test.exe',fmOpenWrite) do begin Seek(0,soFromEnd); Write(Now, SizeOf(TDateTime)); Free; end; end; |
Re: Frage zu TFileStream
Moin!
Zitat:
Delphi-Quellcode:
Weil laut seinem Code zuvor wollte er die letzten Bytes (sizeof(TDateTime)) damit überschreiben und nicht hinten anhängen...
begin
with TFileStream.Create('test.exe',fmOpenWrite) do begin Try Seek(SizeOf(TDateTime), soFromEnd); Write(Now, SizeOf(TDateTime)); Finally Free; End; end; end; @Threadersteller: Und grundlegend: vom soFromEnd gibt an, wieviele Bytes vor dem Ende - daher eine positive Zahl. MfG Muetze1 |
Re: Frage zu TFileStream
danke für die Vorschläge, leider hat es zu keinem brauchbaren Ergebnis geführt...hier noch die genauen Codes :
Delphi-Quellcode:
und
with TFileStream.Create('Project18.exe',fmOpenWrite) do
begin Try Seek(SizeOf(TDateTime), soFromEnd); Write(Now, SizeOf(TDateTime)); Finally Free; End; end;
Delphi-Quellcode:
Jetzt gibt es zwar keinen Fehler mehr, allerdings bekomm ich immer : 30.12.1899 ausgegeben
var
myDate : TDateTime; begin with TFileStream.Create('Project18.exe',fmShareDenyNone) do begin Seek(SizeOf(TDateTime),soFromEnd); Read(myDate,SizeOf(TDateTime)); Free; end; Showmessage(DateTimeToStr(myDate)); end; |
Re: Frage zu TFileStream
Bevor du den timestamp raus schreibst, solltest du Now() in einer Variable speichern.
Grüße vom marabu |
Re: Frage zu TFileStream
mh ne sorry, hilft nix
|
Re: Frage zu TFileStream
mh ok jetzt gehts....musste aber wohl doch -SizeOf(TDateTime) heißen
|
Re: Frage zu TFileStream
Moin!
Dann, willst du das aber hinten anhängen und nicht die letzten 8 Bytes mit dem TimeStamp überschreiben... Was denn nun? Und sicher, das die EXE nicht immer grösser wird? MfG Muetze1 |
Re: Frage zu TFileStream
ob es nun hinten dran kommt, oder der Rest überschrieben wird ist im Grunde egal. Dies wird ohnehin nur Einmal gemacht, d.h. der Faktor, dass das Programm immer größer werden würde, ist zu vernachlässigen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr. |
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