AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Klasse mit vielen MemoryStreams (andere Möglichkeit)
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse mit vielen MemoryStreams (andere Möglichkeit)

Ein Thema von NickelM · begonnen am 2. Jan 2011 · letzter Beitrag vom 4. Jan 2011
 
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#1

Klasse mit vielen MemoryStreams (andere Möglichkeit)

  Alt 2. Jan 2011, 10:36
So hallo erstmal wieder...
Es geht im Folgendes:
Ich arbeite bei meinem Spiel mit der ZLib von JVCL (damit man die Dateien nicht mit jedem Zip programm lesen kann )
Das funkt soweit super. Nur wollte ich dies auch für eine gepackte Datei verwenden, die alle Texturen enthält.
Packen geht. So nur entpacken geht nur in einen Ordner und dan werden dort die Dateien gespeichert. Was ich dumm finde bei einem Spiel, da es unnötig Speicherplatz wegnihmt (wenn mal viele drin sind dan nochmal entpacket..ist irgendwie unprofessionel)
Also dachte ich mir ich schreib mir die Komponente für meine Gebrauch ein wenig um. Die Funktion DecompressFile arbeitet mit TFileStreams zum speichern der entpackten Dateien.
Nun wollte ich mit TObjectList eine Klasse machen, die mehrere TMemoryStreams (weil ich keine anderen Stream kenne bei Delphi2009, der Daten in den Speicher läd) aufnihmt. So nun beim erstellen des Streams gehts noch wenn ich jedoch eine TMemoryStream der objektliste hinzufüge, macht er dies nicht. Bekomm ne Zugriefsverletzung. Egal wie ich es Drehte oder wendete er machte es nicht mit mehren TMemoryStreams. Daraufhin hab ich es mit einem array von Bytes gemacht. Funkt nun auch.
Ich verwende die vorgegeben Klasse TBytes (ein dynamischer array von Bytes) zum speichern der Daten einer Datei im speicher. Zum Abrufen hab ich eine Prozedur geschrieben die den array von Bytes in einen TMemoryStream kopiert, damit ich dan allgemein damit weiterarbeiten von (nämlich von Streams in meine Engine laden, gibt keine anderen Weg )
Nun zu meiner Frage:
Ist es klug nur einen Dynamischen Array zuverwenden? Der hat ja ne begrenzte Anzahl. Und in einem Stream kann ich sowieso nur 1024 Bytes mit einmal Write schreiben. Eine Datei kann aber viel größer sein, ich hab dan die befürschtung, das wenn die datei größer ist als ein dynamischer array, die dann nicht gelesen werden kann. Ist es besser einen array der so aussieht zumachen?
Code:
Dateiarray : array of array [0..1023] of Byte;
Damit hät ich einen dynamischen array von 1024 Bytes.
Oder weis wer eine andere elegantere Variante? Und warum bekomm ich bei dem versuch einen TMemoryStream in eine Objektliste hinzufügen eine zugriefsverletzung? (ich hab die TObjectList klasse umgeschrieben, mit inherite usw.)
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
 


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 05:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz