AGB  ·  Datenschutz  ·  Impressum  







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

Record mit array in Datei schreiben?

Ein Thema von alcaeus · begonnen am 3. Feb 2005 · letzter Beitrag vom 20. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#1

Record mit array in Datei schreiben?

  Alt 3. Feb 2005, 19:40
Hallo allerseits,

ich habe folgende Datenstruktur:

Delphi-Quellcode:
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;
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.
Ich habe bereits folgendes versucht:
Speichern
Delphi-Quellcode:
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');
Laden:
Delphi-Quellcode:
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)));
Nun, beim Speichern kam keine Fehlermeldung, kein gar nichts, die Datei wurde sogar geschrieben, und zwar mit folgendem Inhalt (Hex):
Code:
00 00 00 00 FF FF FF FF
Vor dem Speichern war eben ein Spracheintrag mit insg. 4 Forms und wasweisich wieviel Komponenten pro Form, nach dem Laden nichts.

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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Record mit array in Datei schreiben?

  Alt 3. Feb 2005, 19:56
Ich plädiere ein weiteres Mal für die dpCollectiondpCollection.
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.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Record mit array in Datei schreiben?

  Alt 3. Feb 2005, 19:57
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.

http://www.delphipraxis.net/internal...ghlight=stream
http://www.delphipraxis.net/internal...stream&start=0

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

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Record mit array in Datei schreiben?

  Alt 3. Feb 2005, 20:08
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

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: Record mit array in Datei schreiben?

  Alt 3. Feb 2005, 20:23
Zitat von alcaeus:
@Robert: Koenntest du mir bitte ein kleines Beispiel/einen Link zur Sache mit der PackLib geben?
Damit meinte ich halt irgendwas, dass dir einen Stream packen, verschlüsseln, nach Sibirien verkaufen, ... kann.
(zum Bleistift Hier im Forum suchenzlib, solltest du auf deiner Delphi CD finden)

Zitat von alcaeus:
Ich habe auch schon an die DP-Collection gedacht, aber bisher noch nicht drauf zurueckgegriffen, da alles im Klartext gespeichert wird.
Setze sie auf Binary(wird dadurch etwas kleiner) und jage den Stream durch einen Zerhackstückeler deiner Wahl.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: Record mit array in Datei schreiben?

  Alt 3. Feb 2005, 20:29
Danke Robert,

wie gesagt, ich werd das morgen mal versuchen, das heisst ich werde euch am nachmittag wahrscheinlich wieder belaestigen

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Record mit array in Datei schreiben?

  Alt 3. Feb 2005, 20:38
Zitat von alcaeus:
... Ich habe auch schon an die DP-Collection gedacht, aber bisher noch nicht drauf zurueckgegriffen, da alles im Klartext gespeichert wird.
das ist nicht richtig. TmxJsCollection hat die property Binary. Wenn Du diese Eigenschaft auf True setzt werden die Daten im binär gespeichert. Natürlich könnte man die Strings noch lesen. Die Strings wären bei der Verwendung von Streams ebenfalls lesbar.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: Record mit array in Datei schreiben?

  Alt 3. Feb 2005, 20:41
Zitat von Jens Schumann:
Natürlich könnte man die Strings noch lesen. Die Strings wären bei der Verwendung von Streams ebenfalls lesbar.
Lesbar,nicht lesbar, der Teil ist eigentlich egal, schliesslich sieht man die Strings im Programm sowieso. Mir geht es mehr darum, dass man die Texte in der Datei nicht so einfach aendern kann...

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

Re: Record mit array in Datei schreiben?

  Alt 3. Feb 2005, 20:44
Denk' dir halt ne tolle Kodierung aus.

Du könntest z.B. jedes Byte durchgehen, und es negieren. dann kommt nur noch Buchstabensalat heraus

Oder sowas:
http://www.delphipraxis.net/internal...=256791#256791
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Record mit array in Datei schreiben?

  Alt 4. Feb 2005, 00:05
Zitat von alcaeus:
Zitat von Jens Schumann:
Natürlich könnte man die Strings noch lesen. Die Strings wären bei der Verwendung von Streams ebenfalls lesbar.
Lesbar,nicht lesbar, der Teil ist eigentlich egal, schliesslich sieht man die Strings im Programm sowieso. Mir geht es mehr darum, dass man die Texte in der Datei nicht so einfach aendern kann...

Greetz
alcaeus
Dann verwende doch die dpcollection mit Binary auf True.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:01 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