Re: Pointer :\
@Snoop007: hast du mein posting von der letzten seite gesehen? Mit den Filer-klassen sind solche strukturen kein problem -> siehe WriteBegin, WriteListEnd etc. - Schliesslich wurde diese klassen designed um die delphi komponenten-bäume zu speichern (binär wohlgemerkt). Man kann sie aber auch für alle anderen zwecke einsetzen!
|
Re: Pointer :\
@TeeBee, die struktur der datei und das ganze geplante ist abgeschlossen und wird nun in die tat umgesetzt
@maximov, ich seh bei deinem code keine klasse, keinen record, dein dynamisches element :gruebel: vielleicht bin ich auch nur bissel doof :stupid: |
Re: Pointer :\
Das array (matrix) ist ein dynamisches array of record und die strings sind auch alle dynamisch und die klassen sind TFiler und TReader (classes.pas). Sieht man doch. Die ganzen deklarationen hab ich weggelassen, weil ich nur den umgang mit den filer-klassen demonstrieren wollte!
|
Re: Pointer :\
aber so kann ich da nichts erkennen, da ich ja nicht weiss, wie das ganze zusammenhängt
wäre nett, wenn du das evtl. als anhang dran hängen könntest :) |
Re: Pointer :\
Na, ok:
Delphi-Quellcode:
Die bezeichner der felder und properties sind nicht sehr stardardmässig da der code schon sehr alt ist, aber einer meiner ersten schönen dynamischen streaming-versuche :wink:
Type
TField = record way : byte; item : byte; tag : byte; flags : byte; ran : byte; end; TMatrix = array of array of TField; TMap = class(TDynaVisible) Private FMapFile: string; procedure SetMapFile(const Value: string); Public MapName : STring; Coment : String; Bounds : TPoint; Matrix : TMatrix; style : integer; mode : integer; TimeLimit : integer; GUID : STring; Creator : String; CreateDate : TDateTime; Function SetToBounds(xBounds: TPoint; NoKill: boolean = true):TPoint; procedure ReadData(reader : TReader); dynamic; procedure WriteData(writer : TWriter); dynamic; Function SaveToStream(stream : TStream):Boolean; Function LoadFromStream(stream : TStream):Boolean; Function LoadFromeFile(const fName: String):Boolean; Function SaveToFile(const fName: String):Boolean; published property iName : string read MapName; property iComent: string read Coment; property iStyle: integer read style; property iMode: integer read Mode; property iTimeLimit: integer read TimeLimit; end; ... function TMap.SetToBounds(xBounds: TPoint; NoKill: boolean = true): TPoint; // setzt die dynamische grössen des map-arrays. function TMap.LoadFromeFile(const fName: String): Boolean; var stream : TFileStream; begin stream := TFileStream.Create(fname, fmOpenRead); try LoadFromStream(stream); finally stream.Free; end; end; function TMap.SaveToFile(const fName: String): Boolean; var stream : TFileStream; begin stream := TFileStream.Create(fname, fmCreate or fmOpenWrite); try SaveToStream(stream); finally stream.Free; end; end; |
Re: Pointer :\
ah super danke :) :thumb:
woher wusstest du das, es TWrite gibt bzw. was es macht ? aus einem tut oder Buch ? an alle anderen vielen dank ! |
Re: Pointer :\
Habs durch zufall gefunden und war begeistert :-D Leider war es damals undokumentiert und die tuts sehr mager. Die filer sind halt coole stream-helper und ganz einfach, wenn man einmal begriffen hat wie sie arbeiten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 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