AGB  ·  Datenschutz  ·  Impressum  







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

Dateitypen

Ein Thema von TheMiller · begonnen am 19. Jan 2005 · letzter Beitrag vom 19. Jan 2005
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Dateitypen

  Alt 19. Jan 2005, 00:16
Hallo,

ich suche eine Art, Daten mit längeren Strings zu speichern. Eine Datei, die sehr lange String und Integer-Werte speichern kann. Geht ja mit den records nicht. Habe auch schon mit XML gearbeitet, aber das ist auch nicht so das Gelbe vom Ei.

Wäre für Hilfe Dankbar!
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#2

Re: Dateitypen

  Alt 19. Jan 2005, 00:37
Was spricht dagegen, Strings einfach im Textformat zu speichern? Da kannst du bis zu 2 GB Text am Stück speichern.
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Dateitypen

  Alt 19. Jan 2005, 00:48
Geht ja mit den records nicht <- ?
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Dateitypen

  Alt 19. Jan 2005, 01:59
Zitat von supermuckl:
Geht ja mit den records nicht <- ?
Wenn interessieren auch schon records.

@Topic

Da hat wohl einer die CodeLib vergessen.
Da findet man nämlich so schöne Sache wie die dpCollection.
Vergesse also einfach ganz schnell, dass es sowas wie records gibt.
Leite deine Klasse von TCollectionItem ab und alles, was gespeichert werden soll deklarierst du als published property.

Delphi-Quellcode:
unit uPerson;

interface
uses
   Classes,
   dpCollection;

type TBeruf = (Entwickler, Maurer, Imperator);

type TPerson = class(TCollectionItem)
   private
      fVorname: string;
      fBeruf: TBeruf;
   published
      property Vorname: string read fVorname write fVorname;
      property Beruf: TBeruf read fBeruf write fBeruf;
   end;

{$DEFINE TYPED_DP_COLLECTION_TEMPLATE}
type _COLLECTION_ITEM_ = TPerson;
{$INCLUDE dpCollection_tmpl.pas}
   TPersonCollection = _COLLECTION_;

implementation
{$INCLUDE dpCollection_tmpl.pas}
end.

Delphi-Quellcode:
var
   newPerson: TPerson;
   Personen: TPersonCollection;
const
   FileName = 'Personen.dfm';

begin
   Personen := TPersonCollection.Create();

   newPerson := Personen.Add;
   with newPerson do
   begin
      Vorname := 'Robert';
      Beruf := Entwickler;
   end;

   Personen.SaveToFile('Personen.dfm');
end.
Gespeichert wird:
Code:
object COLLECTION_: _COLLECTION_
  items = <
    item
      Vorname = 'Robert'
      Beruf = Entwickler
    end>
end
Klingt noch nicht sonderlich cool, oder?
hmmm..., stelle dir vor, du musst deine Klasse später erweitern:
Delphi-Quellcode:
   private
      fName: string;
      ...
   published
      property Name: string read fName write fName;
      ...
Genau hier versagt ein File Of [Datentyp].
Mit der dpCollection ist das kein Problem.
Delphi-Quellcode:
   Personen.LoadFromFile('Personen.dfm'); //lade alte Daten
   newPerson := Personen.Add;
   with newPerson do
   begin
      Vorname := 'Hans';
      Name := 'Schröder'; // neue Eigenschaft!
      Beruf := Maurer;
   end;

   Personen.SaveToFile('Personen.dfm'); // zurück schreiben
Jetzt haben wir:
Code:
object COLLECTION_: _COLLECTION_
  items = <
    item
      Vorname = 'Robert'
      Beruf = Entwickler
    end
    item
      Name = 'Schr'#246'der'
      Vorname = 'Hans'
      Beruf = Maurer
    end>
end
Die Collection ist also vollständig abwärtskompatibel.

oder ums es kleiner zu bekommen:
Personen.Binary := True;
Code:
TPF0 _COLLECTION_ COLLECTION_itemsVornameRobertBeruf
Entwickler Name      SchröderVornameHansBeruf
Maurer
  Mit Zitat antworten Zitat
19. Jan 2005, 09:54
Dieses Thema wurde von "Sharky" von "VCL-Komponenten und Controls" nach "Object-Pascal / Delphi-Language" verschoben.
Von einem netten Moderator verschoben
Passt nicht so wirklich zu VCL.
Antwort Antwort


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 14:35 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