AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu TFileStream

Ein Thema von perle · begonnen am 14. Jun 2005 · letzter Beitrag vom 14. Jun 2005
Antwort Antwort
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#1

Frage zu TFileStream

  Alt 14. Jun 2005, 10:23
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:
begin
  with TFileStream.Create('test.exe',fmOpenWrite) do
  begin
    Seek(-SizeOf(TDateTime),soFromEnd);
    Write(Now, SizeOf(TDateTime));
    Free;
  end;
end;
und dann zum auslesen direkt in der test.exe

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?
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

Re: Frage zu TFileStream

  Alt 14. Jun 2005, 10:26
Zitat von perle:
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:
begin
  with TFileStream.Create('test.exe',fmOpenWrite) do
  begin
    Seek(-SizeOf(TDateTime),soFromEnd);
    Write(Now, SizeOf(TDateTime));
    Free;
  end;
end;
Weil das so heisen muss
Delphi-Quellcode:
begin
  with TFileStream.Create('test.exe',fmOpenWrite) do
  begin
    Seek(0,soFromEnd);
    Write(Now, SizeOf(TDateTime));
    Free;
  end;
end;
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Frage zu TFileStream

  Alt 14. Jun 2005, 10:38
Moin!

Zitat von franktron:
Weil das so heisen muss
Delphi-Quellcode:
begin
  with TFileStream.Create('test.exe',fmOpenWrite) do
  begin
    Seek(0,soFromEnd);
    Write(Now, SizeOf(TDateTime));
    Free;
  end;
end;
Weil es aber eigentlich so heissen muss

Delphi-Quellcode:
begin
  with TFileStream.Create('test.exe',fmOpenWrite) do
  begin
    Try
      Seek(SizeOf(TDateTime), soFromEnd);
      Write(Now, SizeOf(TDateTime));
    Finally
      Free;
    End;
  end;
end;
Weil laut seinem Code zuvor wollte er die letzten Bytes (sizeof(TDateTime)) damit überschreiben und nicht hinten anhängen...

@Threadersteller: Und grundlegend: vom soFromEnd gibt an, wieviele Bytes vor dem Ende - daher eine positive Zahl.

MfG
Muetze1
  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Frage zu TFileStream

  Alt 14. Jun 2005, 11:00
danke für die Vorschläge, leider hat es zu keinem brauchbaren Ergebnis geführt...hier noch die genauen Codes :


Delphi-Quellcode:
  with TFileStream.Create('Project18.exe',fmOpenWrite) do
  begin
    Try
      Seek(SizeOf(TDateTime), soFromEnd);
      Write(Now, SizeOf(TDateTime));
    Finally
      Free;
    End;
  end;
und
Delphi-Quellcode:
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;
Jetzt gibt es zwar keinen Fehler mehr, allerdings bekomm ich immer : 30.12.1899 ausgegeben
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Frage zu TFileStream

  Alt 14. Jun 2005, 11:46
Bevor du den timestamp raus schreibst, solltest du Now() in einer Variable speichern.

Grüße vom marabu
  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Frage zu TFileStream

  Alt 14. Jun 2005, 11:53
mh ne sorry, hilft nix
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Frage zu TFileStream

  Alt 14. Jun 2005, 12:03
mh ok jetzt gehts....musste aber wohl doch -SizeOf(TDateTime) heißen
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Frage zu TFileStream

  Alt 14. Jun 2005, 12:05
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
  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Frage zu TFileStream

  Alt 14. Jun 2005, 12:28
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.
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 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