| Autor |
Beitrag |
T3rm1n4T0r
Hält's aus hier
Beiträge: 9
D2005
|
Verfasst: Do 21.04.05 12:32
Hi,
ich bin gerade dabei ein kleines Spiel zu programmieren. Da für dieses Spiel viele kleine Dateien notwendig sein (Texturen. Sounds usw) habe ich mir ein Programm geschrieben, dass die Dateien in eine große Datei packt. Damit verhindere ich zum anderen auch, dass der Benutzer an diese Dateien nicht allzu leicht herankommt.
Dennoch muss ich mit den Dateien ja arbeiten können. Meine Frage also: Wie kann ich die Dateien entpacken, so dass sie nicht auf der Festplatte erstellt werden sondern nur im Ram. Ich muss danach aber noch ganz normal mit den Dateien arbeiten können. Muss sie also aufrufen u.s.w.
Kann mir dabei jemand Ratschläge geben wie das funktioniert.
Habe mir schon überlegt, die Datei mit einem Memorystream zu öffnen. Aber dann weiß ich nicht weiter.
Schonmal Danke
T3rm1
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Do 21.04.05 12:42
Hallo!
Lade die Daten doch in ein TMemoryStream und arbeite anschl. nur noch damit.
Gruß
Tino
|
|
T3rm1n4T0r 
Hält's aus hier
Beiträge: 9
D2005
|
Verfasst: Do 21.04.05 12:55
Öhm, hatte doch geschrieben dass ich nicht weiß ich damit danach weiterarbeiten kann.
Ein einfaches Beispiel. Vorgegeben sei die Prozedur OeffneBild(pfad : string). Sowas muss auch möglich sein, wenn es im Ram oder wo auch immer ist.
Das Problem das ich habe ist, dass wenn ich es im MemoryStream öffne, dass ich dann keinen Pfad mehr habe wo sich die Datei befindet und somit auch damit nicht arbeiten kann.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 21.04.05 13:00
T3rm1n4T0r hat folgendes geschrieben: |
Das Problem das ich habe ist, dass wenn ich es im MemoryStream öffne, dass ich dann keinen Pfad mehr habe wo sich die Datei befindet und somit auch damit nicht arbeiten kann. |
Wozu brauchst du denn dann noch den Pfad? Du hast die Daten doch schon in einem Objekt vom Typ TMemoryStream, da kannst du sie doch einfach nutzen.
|
|
T3rm1n4T0r 
Hält's aus hier
Beiträge: 9
D2005
|
Verfasst: Do 21.04.05 13:16
Wie denn? Habe noch nie mit nem MemryStream gearbeitet. Kann sein dass ich das ganze etwas falsch verstehe. Vllt könntest du ein Beispiel geben.
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 21.04.05 13:22
form1.image1.Picture.Bitmap.LoadFromStream(memstream);
z.b.
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
T3rm1n4T0r 
Hält's aus hier
Beiträge: 9
D2005
|
Verfasst: Do 21.04.05 14:01
Ja, weil Bitmap zufällig so eine Funktion bietet. Aber sowas habe ich ja nicht.
In meinem Beispiel brauch ich es zum Beispiel für diese Funktion -> klixX
Zuletzt bearbeitet von T3rm1n4T0r am Do 21.04.05 14:06, insgesamt 2-mal bearbeitet
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 21.04.05 14:04
was hast du denn?
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 21.04.05 14:09
der aufbau bei
Delphi-Quelltext 1:
| function LoadBMPTexture(Filename: String; var Texture : TGLuint; LoadFromResource : Boolean) : Boolean; |
ist halt so ähnlich wie das bsp mit dem resourcenstream
Delphi-Quelltext 1: 2: 3:
| ResStream := TResourceStream.Create(hInstance, PChar(copy(Filename, 1, Pos('.', Filename)-1)), 'BMP'); ResStream.ReadBuffer(FileHeader, SizeOf(FileHeader)); ResStream.ReadBuffer(InfoHeader, SizeOf(InfoHeader)); |
nur anstatt nen TResourceStream nimmste nen TMemoryStream
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|