Entwickler-Ecke
Dateizugriff - *.pdf aus Resource öffnen?
Gruenschnabel - Do 22.10.09 16:07
Titel: *.pdf aus Resource öffnen?
Hallo Leute!
Da dies mein erster Thread ist, will ich mich mal kurz vorher noch vorstellen. Als, ich bin der Gruenschnabel und das resultiert eigentlich daraus, dass ich Delphi wiederentdeckt habe :-) Ich hatte das vor vielen vielen Jahren mal im Grundkurs Informatik und seitdem ist eigentlich (leider muss man sagen) an wissen verschütt gegeangen. heute nutze ich Delphi6 (vorrangig, da deutsch :-D) und Delphi7SEportable
Nun habe ich folgendes Problem:
Um benötigte Dateien mit in eine EXE compilieren zu können, kann ich sie in eine resource packen und von dort aus zugreifen. So geschehen mit einigen wav's, die auch ohne Probleme funzen. Nun dachte ich in meinem jugendlichen wahn und leichtsinn, dass ich auch die pdf's da reinpacken kann. konnte ich auch. zumindest hat brcc32.exe keinen fehler gebracht.
1. Frage: wo kann ich nachschauen, was ich an dateien alles reinpacken kann? (Hilfe war nicht sonderlich hilfreich)
Beim Versuch die pdf zu öffnen nutze ich die shellexecute samt open...:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.THLClick(Sender: TObject); begin if ShellExecute(Application.Handle, 'open', PChar(13), nil, nil, SW_NORMAL) <= 32 then ShowMessage('Es ist ein Fehler aufgetreten'); end; |
Die 13 gibt logischerweise den Index der res-datei an. Soll zumindest. Beim compilieren bringt er mir keinen fehler, aber beim Zugriff darauf:
| Zitat: |
Zugriffverletzung bei Adresse 7C809E9C in Modul "kernel32.dll". Lesen von Adressse 000000D
|
2. Frage: gibts alternativen? mach ich hier schon was falsch?
Die ShellApi hab ich unter uses eingefügt.
setze ich statt des index den normalen dateipfad ein funzt alles bestens.
Ich hoffe ihr könnt mir helfen.
MfG,
Gruenschnabel
Moderiert von
Narses: Quote- durch Delphi-Tags ersetzt
FinnO - Do 22.10.09 17:20
| Zitat: |
Beim Versuch die pdf zu öffnen nutze ich die shellexecute samt open...:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.THLClick(Sender: TObject); begin if ShellExecute(Application.Handle, 'open', PChar(13), nil, nil, SW_NORMAL) <= 32 then ShowMessage('Es ist ein Fehler aufgetreten'); end; |
|
du gibst nirgends den Pfad der PDF-Datei an.
richtig wäre:
Delphi-Quelltext
1: 2: 3: 4:
| ShellExecute(Application.Handle, 'open', extractFilePath(ParamStr(0))+'MeinePDF.pdf', nil, nil, SW_NORMAL |
Gruenschnabel - Do 22.10.09 17:24
na die pdf hab ich doch in der res-datei mit nem index (in meinem fall die 13) versehen. ich möchte ja den dateipfad vermeiden, damit ich ich zu der exe nicht noch ein datenpaket nebenher stehen lassen muss. Oder hab ich da nen gravierenden denkfehler?
bei den wave dateen funzt das ja auch
FinnO - Do 22.10.09 17:33
bzgl. Ressourcen bin ich jetzt überfragt. Frage mich nur, warum du etwas gegen ein Datenpakte hast. In Zeiten von WinZIP sollte das kein Problem mehr darstellen.
Gruenschnabel - Do 22.10.09 17:38
an und für sich überhaupt nichts. ich hätte nur gerne eine eigenständige exe, die selbstständig lauffähig ist. vielleicht gibts ja ne möglichkeit, aber die ist leider nicht in meinem wissensschatz vorhanden, deshalb poste ich hier :-)
Delete - Fr 23.10.09 00:38
Mach dich mal über TResourceSteam schlau.
Gruenschnabel - Fr 23.10.09 03:49
Perfekt!
Alles bestens funktioniert. Ich danke Euch!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!