Autor Beitrag
T3rm1n4T0r
Hält's aus hier
Beiträge: 9


D2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Do 21.04.05 12:42 
Hallo!

Lade die Daten doch in ein TMemoryStream und arbeite anschl. nur noch damit.

Gruß
Tino
T3rm1n4T0r Threadstarter
Hält's aus hier
Beiträge: 9


D2005
BeitragVerfasst: 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



BeitragVerfasst: Do 21.04.05 13:00 
user profile iconT3rm1n4T0r 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 Threadstarter
Hält's aus hier
Beiträge: 9


D2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9


D2005
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Do 21.04.05 14:09 
der aufbau bei

ausblenden Delphi-Quelltext
1:
  function LoadBMPTexture(Filename: String; var Texture : TGLuint; LoadFromResource : Boolean) : Boolean;					


ist halt so ähnlich wie das bsp mit dem resourcenstream

ausblenden Delphi-Quelltext
1:
2:
3:
  ResStream := TResourceStream.Create(hInstance, PChar(copy(Filename, 1, Pos('.', Filename)-1)), 'BMP');
  ResStream.ReadBuffer(FileHeader, SizeOf(FileHeader));  // FileHeader
  ResStream.ReadBuffer(InfoHeader, SizeOf(InfoHeader));  // InfoHeader



nur anstatt nen TResourceStream nimmste nen TMemoryStream

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit