AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Typisierte Dateien erweitern

Ein Thema von CalganX · begonnen am 22. Mär 2003 · letzter Beitrag vom 23. Mär 2003
Antwort Antwort
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Typisierte Dateien erweitern

  Alt 22. Mär 2003, 15:05
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...
»Mein Kaffee ist so schwarz — der fängt gleich an zu rappen...«
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#2
  Alt 22. Mär 2003, 15: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
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3

Re: Typisierte Dateien erweitern

  Alt 22. Mär 2003, 15:34
Hi Chris,
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
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4
  Alt 22. Mär 2003, 15: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?
»Mein Kaffee ist so schwarz — der fängt gleich an zu rappen...«
  Mit Zitat antworten Zitat
Brüggendiek

Registriert seit: 13. Dez 2002
Ort: Dortmund
275 Beiträge
 
Delphi 5 Standard
 
#5
  Alt 23. Mär 2003, 03: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)
(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

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#6
  Alt 23. Mär 2003, 11: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
»Mein Kaffee ist so schwarz — der fängt gleich an zu rappen...«
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf