Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Typisierte Dateien erweitern (https://www.delphipraxis.net/3627-typisierte-dateien-erweitern.html)

CalganX 22. Mär 2003 14:05


Typisierte Dateien erweitern
 
Hi,
ich möchte einer typisierten Datei etwas anhängen. So wie, wenn man Append nutzt. Allerdings funktioniert Append nur bei Text-Datei-Typen, also nicht bei typisierten Dateien. Was kann ich da machen?

Chris

PS: Bei Rewrite, wird ja, meines Wissens, alles gelöscht und neu angefangen...

d3g 22. Mär 2003 14:34

Die Idee ist jetzt zwar unelegant, aber schreibe doch das, was du anhängen willst per Rewrite() in eine neue Datei und dann liest du Original und Anhängsel in einen TFileStream ein und kopierst beide zusammen.

Delphi-Quellcode:
var
  Body, Appendix: TFileStream;

{...}

Body := TFileStream.Create('Original', fmReadWrite);
try
  Appendix := TFileStream.Create('Anhängsel', fmRead);
  Body.CopyFrom(Appendix, Appendix.Size);
finally
  Body.Free;
  Appendix.Free;
end;
So in der Art - hab ich jetzt nicht getestet.

MfG,
d3g

Daniel B 22. Mär 2003 14:34

Re: Typisierte Dateien erweitern
 
Hi Chris,
Zitat:

Zitat von Chakotay1308
PS: Bei Rewrite, wird ja, meines Wissens, alles gelöscht und neu angefangen...

Und warum liest Du Dir nicht vorher den Inhalt aus und speicherst alles in die Datei? Also alter Inhalt + neuer Inhalt!

Grüsse, Daniel :hi:

CalganX 22. Mär 2003 14:52

Hi,
das mit den Streams ist mir nicht ganz klar, da ich die Theorie der Streams nicht kenne. Allerdings ist das Prinzip mit dem Zusammensetzen mir auch schon gekommen, allerdings ist das ziemlich aufwendig und ich dachte, dass es da vielleicht noch eine andere Möglichkeit gibt.
Allerdings scheint dem ja nicht so... :(

Chris

PS: Kann ich eigentlich das auch so machen, dass er alte und der neue Teil einfach per PlainText zusammen gesetzt werden?

Brüggendiek 23. Mär 2003 02:18

Hallo Chris!

Das ist doch ganz einfach - allerdings nicht für Windoof-Geschädigte, die sich an den Standard halten und eine Datei erst mal komplett in den Speicher lutschen.

Typisierte Dateien sind so was ähnliches wie dynamische Arrays auf einem Datenträger. Man kann mit "Seek" auf eine beliebige Position setzen, auch auf "Länge + 1" - geschrieben wird an der aktuellen Stelle!

Delphi-Quellcode:
  Seek(f, FileSize(f));
  Write(f, neudaten);
Die Datei wird, wenn sie existiert, mit "Reset" geöffnet (neue Dateien mit "Rewrite" öffnen!) und dann kann man beliebig lesen und schreiben. Man darf nur nicht über das Ende hinaus lesen oder höher als auf "Anzahl+1" schreiben. Die Zählung beginnt wie fast überall bei 0 (also 0 bis FileSize-1).

VORSICHT: Dieses Vorgehen ist in keinster Weise Windows-kompatibel, da nach Windoof-Norm IMMER die komplette Datei (auch wenn es 500MB sind) in den Speicher zu laden ist. Deshalb sollte man ja auch typisierte Dateien nicht mehr verwenden, die sind TOTAL veraltet. Aber wie sagte schon der erfahrene Lokführer: bei feuchtem Wetter wünsche ich mir an der Steigung keine modernste Elektronik (neue Lok), sondern: SECHS Achsen unterm Hintern (alte bzw. veraltete Lok) :mrgreen: :mrgreen:
(nebenbei, auch ich halte typisierte Dateien für die optimale Lösung, INI-Files sind bei mir immer typisiert, geht schneller!)
Und nochwas: bei mir (D5 Standard) sind die Eingabeaufzeichnunglisten (Suchen-Dialog etc.) in der Registry - was haben die da zu suchen? achso - Windoof schreibt ja alles in die Registry - man sollte eben für jedes Programm einen eigenen Rechner nehmen :mrgreen:

Gruß

Dietmar Brüggendiek

CalganX 23. Mär 2003 10:55

Hi,
danke für den Tipp. Leider hat es sich vorhin erledigt, da ich doch XML nehme. Das Problem ist nur, dass dann jeder die richtige Antwort beim Quiz auslesen kann und das finde ich nicht so toll. Aber nun gut. Ist ja nur für private Zwecke.

Danke für eure Hilfe,
Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 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