AGB  ·  Datenschutz  ·  Impressum  







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

Datei wird beim erstellen gelöscht

Ein Thema von RavenIV · begonnen am 10. Mär 2005 · letzter Beitrag vom 10. Mär 2005
Antwort Antwort
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#1

Datei wird beim erstellen gelöscht

  Alt 10. Mär 2005, 10:08
ich benutze TFileStream, um einen text in eine datei zu schreiben.
jedesmal, wenn ich TFielStream.create aufrufe, wird die datei aber gelöscht.

mein System: delphi7 mit WinXP.

hier der code:
Delphi-Quellcode:
procedure TFoRemotetest.IBSQLMonitorSQL (EventText: string; EventTime: TDateTime);
var
  FileName: string;
  EventStream: TStringStream;
  FileObj: TFileStream;
begin
  FileName := 'D:\db_i.log';
  EventStream := TStringStream.Create(EventText);
  FileObj := TFileStream.Create (FileName, fmCreate);
  FileObj.CopyFrom(EventStream,0);
   FileObj.Free;
end;
irgendeine lösung?

gruessle
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: Datei wird beim erstellen gelöscht

  Alt 10. Mär 2005, 10:11
Zitat von RavenIV:
jedesmal, wenn ich TFielStream.create aufrufe, wird die datei aber gelöscht.
Dann solltest du mal die Delphi Hilfe aufschlagen und die Bedeutung von fmCreate lesen.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Datei wird beim erstellen gelöscht

  Alt 10. Mär 2005, 10:20
die OH sagt für fmCreate:
Zitat:
Es wird eine Datei mit dem angegebenen Namen angelegt. Ist eine Datei mit diesem Namen bereits vorhanden, wird die Datei zum Schreiben geöffnet.
also sollte die datei doch nicht jedesmal neu erstellt werden.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#4

Re: Datei wird beim erstellen gelöscht

  Alt 10. Mär 2005, 10:34
Zitat von RavenIV:
also sollte die datei doch nicht jedesmal neu erstellt werden.
Aber so wie es aussieht, bist du zu einem anderem Ergebnis gekommen.

Delphi-Quellcode:
procedure TFoRemotetest.IBSQLMonitorSQL (EventText: string; EventTime: TDateTime);
var
  FileName: String;
  Handle: Integer;
begin

  FileName := 'D:\db_i.log';

  if FileExists(FileName) then
    Handle := FileOpen(FileName, fmOpenReadWrite)
  else
    Handle := FileCreate(FileName);

  if Handle <> -1 then
  begin
    FileSeek(Handle, 0, 2);
    FileWrite(Handle, EventText[1], Length(EventText));
    FileClose(Handle);
  end;

end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Datei wird beim erstellen gelöscht

  Alt 10. Mär 2005, 11:03
servus Sprint

deine Lösung ist auch schön.
aber ich liebe streams und ich liebe objekte und ich liebe exceptions.

jedem das seine, mir das meiste...


P.S. die lösung meines problems:
Delphi-Quellcode:
procedure TFoRemotetest.IBSQLMonitorSQL (EventText: string; EventTime: TDateTime);
var
  FileName: string;
  EventStream: TStringStream;
  FileObj: TFileStream;
begin
  FileName := 'D:\db_i.log';
  EventStream := TStringStream.Create (EventText);
  try
    FileObj := TFileStream.Create (FileName, fmOpenReadWrite or fmShareDenyNone);
  except
    FileObj := TFileStream.Create (FileName, fmCreate or fmShareDenyNone);
  end;
  FileObj.Seek (FileObj.Size, soFromBeginning);
  FileObj.CopyFrom (EventStream, 0);
  FileObj.Free;
end;
gruessle
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#6

Re: Datei wird beim erstellen gelöscht

  Alt 10. Mär 2005, 11:10
Sollte die Datei nicht existieren, dann wird FileObj zweimal erstellt, aber nur einmal freigegeben.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Datei wird beim erstellen gelöscht

  Alt 10. Mär 2005, 13:26
Zitat von Sprint:
Sollte die Datei nicht existieren, dann wird FileObj zweimal erstellt, aber nur einmal freigegeben.
Mindestens genauso schlimm ist, dass EventStream nur mit Create erzeugt wird und danach nicht mehr freigegeben wird.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Datei wird beim erstellen gelöscht

  Alt 10. Mär 2005, 13:31
hier nun eine mischung aus allen vorschlägen:
Delphi-Quellcode:
procedure TFoRemotetest.IBSQLMonitorSQL (EventText: string; EventTime: TDateTime);
var
  FileName: string;
  EventStream: TStringStream;
  FileObj: TFileStream;
begin
  FileName := 'D:\db_i.log';
  EventStream := TStringStream.Create (DateTimeToStr (EventTime) + EventText + ''#13#10'');
  if FileExists (FileName) then
    FileObj := TFileStream.Create (FileName, fmOpenReadWrite or fmShareDenyNone)
  else
    FileObj := TFileStream.Create (FileName, fmCreate or fmShareDenyNone);
  try
    FileObj.Seek (FileObj.Size, soFromBeginning);
    FileObj.CopyFrom (EventStream, 0);
  finally
    FileObj.Free;
  end;
  EventStream.Free;
end;
hier dürfte alles OK sein...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Datei wird beim erstellen gelöscht

  Alt 10. Mär 2005, 13:33
Zitat von RavenIV:
hier dürfte alles OK sein...
Ja, ist schon viiiiiel besser als der Code vom Anfang
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  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 15:42 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