![]() |
Record mit array in Datei schreiben?
Hallo allerseits,
ich habe folgende Datenstruktur:
Delphi-Quellcode:
Diese Struktur dient dazu, alle Texte fuer meine Anwendung zu speichern, so dass diese auch schnell gewechselt werden. Nun moechte ich die Texte aber nicht jedesmal neu aus der ini-Datei laden, sondern das LanguageEntries-Array direkt in eine Datei schreiben und neu auslesen.
type
TComponentEntry = record sComponentName: String; cCaption: TCaption; cHint: TCaption; end; //type TComponentEntry = record TFormEntry = record sFormName: String; cCaption: TCaption; ComponentEntries: array of TComponentEntry; end; //type TFormEntry = record TLanguageEntry = record sLanguageName: String; FormEntries: array of TFormEntry; end; //type TLanguageEntry = record var LanguageEntries: array of TLanguageEntry; Ich habe bereits folgendes versucht: Speichern
Delphi-Quellcode:
Laden:
var
MS: TMemoryStream; begin ShowMessage(IntToStr(Length(LanguageEntries))); MS := TMemoryStream.Create; try MS.Position := 0; MS.Write(LanguageEntries, SizeOf(LanguageEntries)); MS.SaveToFile('C:\temp.tmp'); finally MS.Free; end; ShowMessage('Saved');
Delphi-Quellcode:
Nun, beim Speichern kam keine Fehlermeldung, kein gar nichts, die Datei wurde sogar geschrieben, und zwar mit folgendem Inhalt (Hex):
var
MS: TMemoryStream; begin MS := TMemoryStream.Create; try MS.Position := 0; MS.LoadFromFile('C:\temp.tmp'); MS.Read(LanguageEntries, SizeOf(LanguageEntries)); finally MS.Free; end; ShowMessage(IntToStr(Length(LanguageEntries)));
Code:
Vor dem Speichern war eben ein Spracheintrag mit insg. 4 Forms und wasweisich wieviel Komponenten pro Form, nach dem Laden nichts.
00 00 00 00 FF FF FF FF
Hat jemand eine Idee wie ich diese Struktur speichern kann? Die Texte sollten auch nicht unbedingt im Klartext drinstehn, ich haette lieber sowas wie bei einem File of <Datentyp> Thanx and Greetz alcaeus |
Re: Record mit array in Datei schreiben?
Ich plädiere ein weiteres Mal für die
![]() Wenn du es nicht in Klartext speichern willst, speichere sie doch in einen Stream, den du mit irgendeiner PackLib schrumpfst. ;) Das hätte auch den Vorteil, dass du dir deine Anwendung nicht mit diesem Array und dem Record entstellen musst. :) |
Re: Record mit array in Datei schreiben?
ich persönlich würde zum speichern streams verwenden und die Daten einzeln reinschreiben. Wenn sich der aufbau mal ändert (ist ja nie ausgeschlossen) hat man bessere Möglichkeiten, darauf zu reagieren. Es gab da schon mehrere Anregungen auch hier im Forum.
![]() ![]() sowie du das machst, wird das bei dynamsichen array und Strings nichts, da die Länge unbestimmt ist. ein sizeof auf einen String wird dir auch nur 4 zurückgeben, egal wie lang er ist. Mfg Frank |
Re: Record mit array in Datei schreiben?
Danke, ich werd die entsprechenden Beitraege mal als PDF speichern, und es morgen auf dem Weg zur Arbeit ausprobieren.
@Robert: Koenntest du mir bitte ein kleines Beispiel/einen Link zur Sache mit der PackLib geben? Ich habe auch schon an die DP-Collection gedacht, aber bisher noch nicht drauf zurueckgegriffen, da alles im Klartext gespeichert wird. Danke schonmal :thumb: Greetz alcaeus |
Re: Record mit array in Datei schreiben?
Zitat:
(zum Bleistift ![]() Zitat:
|
Re: Record mit array in Datei schreiben?
Danke Robert,
wie gesagt, ich werd das morgen mal versuchen, das heisst ich werde euch am nachmittag wahrscheinlich wieder belaestigen :mrgreen: Greetz alcaeus |
Re: Record mit array in Datei schreiben?
Zitat:
|
Re: Record mit array in Datei schreiben?
Zitat:
Greetz alcaeus |
Re: Record mit array in Datei schreiben?
Denk' dir halt ne tolle Kodierung aus.
Du könntest z.B. jedes Byte durchgehen, und es negieren. dann kommt nur noch Buchstabensalat heraus :wink: Oder sowas: ![]() |
Re: Record mit array in Datei schreiben?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz