Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pointer :\ (https://www.delphipraxis.net/27627-pointer-%5C.html)

maximov 13. Aug 2004 14:18

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!

Snoop007 13. Aug 2004 14:24

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:

maximov 13. Aug 2004 14:39

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!

Snoop007 13. Aug 2004 14:52

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 :)

maximov 13. Aug 2004 15:33

Re: Pointer :\
 
Na, ok:

Delphi-Quellcode:
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;
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:

Snoop007 13. Aug 2004 19:24

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 !

maximov 13. Aug 2004 23:12

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.
Seite 3 von 3     123   

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