Einzelnen Beitrag anzeigen

Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Record in FileStream schreiben

  Alt 16. Mär 2005, 14:08
Hi,

die Sache ist folgende:

Ich schreibe wie gesagt, diesen Record TTEDInfo in eine Datei. Wenn nun jemand mit meinem Programm diese Datei öffnet, dort aber andere _VERSION drinn sein sollten, soll der Benutzer informiert werden, dass der Benutzer eine alte Version hat oder er ein altes Dokument geöffnet hat.

Auselesen:

Delphi-Quellcode:
procedure TContainer.Load(const FileName: String);
var
  Doc: TDocument;
  Ext: String;
  Stream: TFileStream;
  StringStream: TStringStream;
  Info: TTEDInfo;
begin
  Doc := GetDoc;

  Ext := ExtractFileExt(FileName);

  if LowerCase(Ext) <> '.tedthen
  begin
    case Doc.FEditorType of
      etRich:
        TRxRichEdit(Self.FRichEdits[Doc.Number]).Lines.LoadFromFile(FileName);
      etSyn: TSynEdit(Self.FSynEdits[Doc.Number]).Lines.LoadFromFile(FileName);
    end;
  end
  else
  begin
    try
      Stream := TFileStream.Create(FileName, fmCreate);
      StringStream := TStringStream.Create('');

      Info := ReadTedInfoFromStream(Stream);

      ShowMessage(Info.CORE_VERSION); // Das is nur ma zum Test
      ShowMessage(Info.SAVE_TEXT); // Das auch^^
    finally
      FreeAndNil(Stream);
      FreeAndNil(StringStream);
    end;
  end;
end;
Speichern:

Delphi-Quellcode:
procedure TContainer.Save(const FileName: String);
var
  Doc: TDocument;
  Ext: String;
  Stream: TFileStream;
  StringStream: TStringStream;
begin
  Doc := GetDoc;

  Ext := ExtractFileExt(FileName);

  if LowerCase(Ext) <> '.tedthen
  begin
    case Doc.FEditorType of
      etRich:
        TRxRichEdit(Self.FRichEdits[Doc.Number]).Lines.SaveToFile(FileName);
      etSyn: TSynEdit(Self.FSynEdits[Doc.Number]).Lines.SaveToFile(FileName);
    end;
  end
  else
  begin
    try
      Stream := TFileStream.Create(FileName, fmCreate);
      StringStream := TStringStream.Create('');

      WriteTedInfoToStream(Stream, TedInfo);
    finally
      FreeAndNil(Stream);
      FreeAndNil(StringStream);
    end;
  end;
end;
Deswegen wollte ich das so speichern:

- TEDInfo
- Eigentlicher Inhalt der Datei (wird im Moment noch nicht gespeichert)
  Mit Zitat antworten Zitat