AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Eigene Klassen-Objects mit TStream speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Klassen-Objects mit TStream speichern

Offene Frage von "Der_Pate86"
Ein Thema von Der_Pate86 · begonnen am 14. Aug 2005 · letzter Beitrag vom 25. Aug 2005
Antwort Antwort
Seite 2 von 3     12 3      
Der_Pate86

Registriert seit: 14. Aug 2005
10 Beiträge
 
#11

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 24. Aug 2005, 19:05
Zitat von jfheins:
Nimm die dpCollection, das ist das beste
na gut, ich probier es mal aus. und danke für die hilfe.
aber ein bissl hätte ich da noch was:

Zitat:
Du erstellst dir eine TMyItem Klasse, die du speichern möchtest (muss von TCollectionItem abgeleitet sein) und eine Collection (quasi ein Array of TMyItem)

d.h. du brauchst eine zusätzliche Collectionklasse, trägst deine Items dort ein und speicherst alles mit einem SaveToFile.
hmmm....was ist denn eine collection in delphi?? und noch wichtiger, wie sieht das ding aus und wie erstelle ich eins?
Aktives Mitglied der Verinigung: "Rettet den Wald, esst die Biber!"
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 24. Aug 2005, 19:54
Ach, wie ich mich freue, dass alci das Tut endlich fertig hat

http://www.alcaeus.org/filelib.php?cat_id=13

Da kannst du dir ein tolles Tutorial herunterladen, dass dir hoffentlich alle fragen beantwortet
  Mit Zitat antworten Zitat
Der_Pate86

Registriert seit: 14. Aug 2005
10 Beiträge
 
#13

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 24. Aug 2005, 22:49
herzlichen dank auch! sieht mal sehr informativ aus. (hab es mal kurz nach dem ausdrucken überflogen) werde mich die nächsten tage nochmal richtig dransetzen. falls dann doch noch fragen aufkommen sollten, melde ich mich einfach hier nochmal.

MfG,
Der_Pate86
Aktives Mitglied der Verinigung: "Rettet den Wald, esst die Biber!"
  Mit Zitat antworten Zitat
Der_Pate86

Registriert seit: 14. Aug 2005
10 Beiträge
 
#14

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 25. Aug 2005, 13:59
so, ich hab das ganze jetzt mal in mein projekt eingebaut und es läuft auch. das probelm ist: es wird richtig gespeichert, aber die datei ist leer! der speichert zwar das CollectionItem, aber nicht dessen Objekte und die darin enthaltenen Attribute. =(
was nun?
Aktives Mitglied der Verinigung: "Rettet den Wald, esst die Biber!"
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 25. Aug 2005, 14:04
Die Unterobjekte der Collection-Items müssen von TPersistent abgeleitet werden
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

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

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 25. Aug 2005, 14:10
Zitat von jfheins:
Die Unterobjekte der Collection-Items müssen von TPersistent abgeleitet werden
Das stimmt nur teilweise. Ich kann auch einen Integer in mein CollectionItem reinpacken, und es wird gespeichert. Wenn du aber kompliziertere Strukturen speichern willst, musst du diese aber tatsaechlich von TPersistent ableiten, das Delphi-Streaming-System erfasst nur solche Klassen.

@Der_Pate: Kannst du vielleicht mal dein CollectionItem hier posten (einfach die Klassendeklaration)? Das wuerde die Fehlersuche ein bisschen erleichtern

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
 
#17

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 25. Aug 2005, 14:18
Ich weis, ich bin besserwisserisch, und ich versuche auch, mich zu ändern aber ein "Das stimmt nur teilweise." kann ich einfach nicht auf mir sitzen lassen

Ich hatte nämlich von Unterobjekten gesprochen, die von TPersistent abgeleitet werden müssen - und in diesem Fall (Win32) sind Integers etc. keine Objekte - und müssen somit auch nicht von TPersistent abgeleitet werden
  Mit Zitat antworten Zitat
Der_Pate86

Registriert seit: 14. Aug 2005
10 Beiträge
 
#18

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 25. Aug 2005, 21:05
aha, ok danke. das versuche ich jetzt gleich mal. aber bringt das irgendwelche veränderungen beim umgang mit den unterobjekten, oder so?
Aktives Mitglied der Verinigung: "Rettet den Wald, esst die Biber!"
  Mit Zitat antworten Zitat
Der_Pate86

Registriert seit: 14. Aug 2005
10 Beiträge
 
#19

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 25. Aug 2005, 21:16
hmmm...es wird trotzdem nicht sogespeichert wie es sollte.
hier die gesammte objekt-deklaration:

Delphi-Quellcode:
type
  TEquipment = class(TPersistent)
    public
    Name:string[30];
    Kosten:integer;
    FuerKlasse:array [0..4] of boolean;
    Verfuegbarkeit:array [0..9] of boolean;
    end;

type
  TRumpf = class(TEquipment)
    public
    Klasse,Waffenslots,Equipmentslots,Panzerung,Wendigkeit:integer;
    end;

type
  TWaffe = class(TEquipment)
    public
    Kategorie,Waffenslots,Schaden,Munition:integer;
    end;

type
  TSchild = class(TEquipment)
    public
    Absorbtion:integer;
    end;

type
  TAusstattung = class(TEquipment)
    public
    Kategorie,Faktor:integer;
    WirkungAuf:array [0..4] of string[30];
    end;

type
  TAntrieb = class(TEquipment)
    public
    TopSpeed,WS:integer;
    end;

type
  TPlanet = class(TPersistent)
    public
    Name,Volk,Regierung,Event,Benoetigt,WeedProTag:string;
    Weedproduktion:integer;
    end;

type
  TCharacter = class(TPersistent)
    public
    Erfahrung,Level,Coolness,Credits,Zielgenau,Flugkenntnis:integer;
    end;

type
  TSchiff = class(TPersistent)
    public
    Name:string[30];
    Rumpf:TRumpf;
    Waffen:array [0..49] of TWaffe;
    Schild:TSchild;
    Ausstattung:array [0..49] of TAusstattung;
    Antrieb:TAntrieb;
    constructor Create;
    end;

type
  TSpieler = class(TPersistent)
    public
    Name,Passwort,Rasse:string[30];
    PWschutz:boolean;
    Character:TCharacter;
    Schiff:TSchiff;
    constructor Create;
    end;

type
  TGameData = class(TPersistent)
    public
    PlanetID:integer;
    Rumpf:array [0..5] of TRumpf;
    Waffen:array [0..6] of TWaffe;
    Schild:array [0..4] of TSchild;
    Ausstattung:array [0..34] of TAusstattung;
    Antrieb:array [0..5] of TAntrieb;
    Planeten:array [1..10] of TPlanet;
    constructor Create;
    end;

type
  TGame = class(TCollectionItem)
    Spieler1:TSpieler;
    GameData:TGameData;
    end;
Aktives Mitglied der Verinigung: "Rettet den Wald, esst die Biber!"
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#20

Re: Eigene Klassen-Objects mit TStream speichern

  Alt 25. Aug 2005, 21:38
Nur mal schnell ein paar Dinge, die mir gerade ins Auge gesprungen sind. Für mehr habe ich keine Lust, da ich nur wiederholen würde, was du bisher schon nicht lesen wolltest...
  1. Wozu shortstrings? Deine strings werden mit der dpCollection eingelesen und ausgelesen egal wieviel drinsteht.
    Shortstrings sind _immer_ 30 Zeichen lang.
  2. Hast du dir das überhaupt durchgelesen?
    Du scheinst wohl den teil übersprungen zu haben, der sagt, dass nur published properties per default erfasst werden.
    btw: Das steht hier in fast jedem Thread zur dpCollection X-mal...
  3. Arrays werden nicht erfasst.
    Wobei die Arrays nicht viel Sinn machen. Das geht sicher auch eleganter.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:11 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