Daten aus Variable vom Typ FILE in Funktion LoadFromFile()
spacer
Autor Nachricht
jjturbo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 440

Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
BeitragVerfasst: Di 25.10.11 09:20 
Moin Forum,

Ich habe ein paar Grafiken, die ich mit ausliefern muss, aber möchte verhindern, dass jemand diese Grafiken einfach kopieren und weiterverwenden kann.
Ich habe etwas mit dem schönen Namen "MyArchiv" gefunden, was eigentlich ganz gut passen könnte.
Siehe www.delphi-treff.de/...myarchiv/einleitung/
Ich kopiere alle meine Grafiken in ein solches Archiv, ich lese eine gewünschte Datei aus diesem Archiv und habe sie in einer Variable vom Typ FILE gespeichert.
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
type TArchivTyp = record
ArchivFile :File;
Archivname :String;
FileStart :TStringList;
FileNames :TStringList;
RueckgabeDatei :File;
end;
var Archiv :TArchiv;


In Rueckgabedatei habe ich jetzt meine Datei.
Als nächstes möchte ich sie in Funktion wie z.B. TImage.Picture.LoadFromFile verwenden.
Aber da hakts irgendwie...
ausblenden Delphi-Quelltext markieren
1:
Image1.Picture.LoadFromFile(Archiv.Ruekgabedatei)

Das geht ja nun einmal nicht.
Ich hoffe Ihr könnt mir helfen?

Gruß Oliver

_________________
Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 6027
Erhaltene Danke: 40

XP-Pro, Windows 7
D2005 Prof, XE2, SharpDevelop 2.0, VC#Express
BeitragVerfasst: Di 25.10.11 09:44 
Hast du Anleitung komplett gelesen?
Um auf die Datei zugreifen zu können, musst du diese (temporär) erzeugen und dann öffnen/laden.
Hier zu lesen

Du kannst natürlich eine Routine, bzw. besser eine Klasse dazu schreiben, die das für dich macht.

_________________
Lesen gefährdet die Dummheit.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jjturbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 440

Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
BeitragVerfasst: Di 25.10.11 09:56 
Aber das würde ja bedeuten: Ich lese die Datei ein(Aus meinem Archiv), dann schreibe ich sie in eine temporäre Datei, und dann lese sie dann wieder ein. Also brauche ich dann ungefähr die dreifache Zeit?
Hintergrund: Es sind 3D-Dateien, die ich mit GL-Scene darstelle. Insgesamt ~200MB

Gibt es denn vielleicht noch eine andere elegante Möglichkeit?

_________________
Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 452
Erhaltene Danke: 10

Win XP, Debian GNU/Linux
Delphi 2007 Enterprise, Java, C#
BeitragVerfasst: Di 25.10.11 10:26 
Du könntest die Rückgabedatei z.B. ein ein Byte-Array einlesen und damit weiter arbeiten, du könntest es auch mit einem TMemoryStream versuchen.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 6027
Erhaltene Danke: 40

XP-Pro, Windows 7
D2005 Prof, XE2, SharpDevelop 2.0, VC#Express
BeitragVerfasst: Di 25.10.11 10:30 
TMemoryStream wäre jetzt auch mein Vorschlag gewesen.

_________________
Lesen gefährdet die Dummheit.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jjturbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 440

Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
BeitragVerfasst: Di 25.10.11 11:09 
TMemoryStream?
Könntet Ihr vielleicht mal einen kleinen Ansatz posten?

So vielleicht ungefähr?
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
var fs : TStream;
begin
fs := TMemoryStream.Create;
fs.Write(MyArchiv.RueckgabeDatei,SizeOf(MyArchiv.RueckgabeDatei));
GLFreeForm1.LoadFromStream(Dir + 'temp.stl',fs);
fs.Free;
end;

_________________
Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jjturbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 440

Win2000 prof., WinXP prof.
D4 Stand., D5 Prof, D7 Prof, D2007 Prof.
BeitragVerfasst: Mi 26.10.11 08:28 
Also, ich habe jetzt den Weg mit der temporären Datei gewählt. Das funktioniert ganz gut, nicht so langsam wie ich gedacht habe. Ehrlich gesagt kommt es mir genau so schnell vor wie vorher, als ich die Dateien direkt eingelesen habe :)


Danke an alle, die sich den Kopf zerbrochen haben :)

Gruß Oliver

_________________
Windows XP: Für die einen nur ein Betriebssystem - für die anderen der längste Virus der Welt...
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home