Autor Beitrag
jjturbo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 516

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
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
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...
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
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.
jjturbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 516

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...
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, 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.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 25.10.11 10:30 
TMemoryStream wäre jetzt auch mein Vorschlag gewesen.
jjturbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 516

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
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...
jjturbo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 516

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...