Wedvich Skrevet 8. mars 2005 Del Skrevet 8. mars 2005 Driver og lager et rollespill i Delphi, og jobber med grafikkmotoren. Bruker DirectX seff. Men uansett, det er ikke poenget. Jeg skal ha maps, som består av tiles som er så og så store. Så det blir nesten som et rutenett, f. eks: [0, 0][1, 0][2, 0][3, 0] [0, 1][1, 1][2, 1][3, 1] [0, 2][1, 2][2, 2][3, 2] [0, 3][1, 3][2, 3][3, 3] Dette ser egentlig sånn ut: TMap: record Tile: array of array of TTile; end; Mapsene må selvfølgelig være inni en fil. Jeg vil så klart åpne for forskjellig størrelse på mapsene, men jeg vil liksom ikke lagre mer data enn jeg trenger på grunn av tomme felt i et statisk array. Så et dynamisk array ville vært toppen, men problemet er at jeg ikke kan bruke dynamiske arrays i typede filer, ergo kan jeg ikke lagre recorden min med mappet i Går ut ifra at utypede filer er veien å gå. Så, er det noen måte jeg kan lagre et slikt dynamisk array som binary? Trenger en måte som gjør det enkelt å lagre til og lese fra en slik fil. Noen forslag? Lenke til kommentar
Format71 Skrevet 9. mars 2005 Del Skrevet 9. mars 2005 Jeg ville ha brukt en TFileStream tror jeg. Følgende (utestede) kode skal kunne lagre et kart. Kartet trenger ikke være firkantet: fs := TFileStream.Create(...); try x := length(map); fs.Write(x, sizeOf(x)); for i := low(map) to high(map) do begin y := length(map[i]); fs.Write(x, sizeOf(x)); for j := low(map[i]) to high(map[i]) do begin fs.Write(map[i, j], sizeOf(map[i, j])); end; end; finally fs.free; end; -Vegar Lenke til kommentar
DidzisK Skrevet 18. mars 2005 Del Skrevet 18. mars 2005 Hvis du arver TMap fra TComponent, kan du inkludere masse rart, for eksempel TCollection, i Published properties. Når du da kjører Map1.SaveToFile (metode av TComponent), sørger Delphi's streaming system for å lagre innholdet - altså du slipper å tenke på hvordan data lagres, du kan konsentrere deg på hva som skal ligge i data. TCollection er også en type dynamisk array. Lenke til kommentar
PoseFant Skrevet 15. april 2005 Del Skrevet 15. april 2005 Hvorfor ikke gjøre noe ala: type TMap = class private Fx: Integer; Fy: Integer; protected constructor Create(X, Y: Integer); public property X: Integer read Fx write Fx; property Y: Integer read Fy write Fy; end; var Maps: TList; constructor TMap.Create(X, Y: Integer); begin ... end; begin Maps:= TList.Create(nil); Maps.Add(TMap.Create(X,Y); ... end; Nå har jeg ikke Delphi installert, men som du ser prøver jeg å vise til objekter istedenfor å lage dynamiske tabeller som er vanskelige å holde kontroll på. --- /*pF med forbehold om syntax og medlemsfeil Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå