HTML aus Ressourcen DLL lesen
HTML aus Ressourcen DLL lesen
Hallo zusammen,
dank dem Kollegen PascalDragon und vielen anderen aus diesem Forum, ist es mir nun möglich Stringtabellen aus einer Ressourcen DLL sehr komfortabel auszulesen ( Siehe viewtopic.php?p=123624#p123624).
Nochmals danke für eure nette Hilfe.
Nun würde ich gerne HTML Daten ( liegen im XML Format vor) aus einer Ressourcen Datei auslesen.
Ich habe zwar festgestellt, das ich dazu einen READER benötige, weis jedoch nicht welchen, ob es so einen gibt, und wo ich den finden kann.
Kann jemand von euch helfen?
Viele Grüße
Lorca
dank dem Kollegen PascalDragon und vielen anderen aus diesem Forum, ist es mir nun möglich Stringtabellen aus einer Ressourcen DLL sehr komfortabel auszulesen ( Siehe viewtopic.php?p=123624#p123624).
Nochmals danke für eure nette Hilfe.
Nun würde ich gerne HTML Daten ( liegen im XML Format vor) aus einer Ressourcen Datei auslesen.
Ich habe zwar festgestellt, das ich dazu einen READER benötige, weis jedoch nicht welchen, ob es so einen gibt, und wo ich den finden kann.
Kann jemand von euch helfen?
Viele Grüße
Lorca
Re: HTML aus Ressourcen DLL lesen
Wie bitte?
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1436
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: HTML aus Ressourcen DLL lesen
Du mußt die units dom und xmlread einbinden. Darin befindet sich eine Routine, welche xml Daten aus einer Datei oder einem Stream lesen kann.
-
- Beiträge: 624
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: HTML aus Ressourcen DLL lesen
Du musst deine HTML-Datei als RCDATA in deinem Programm oder in irgendeine DLL einbinden und so auslesen:
Vielleicht hilft auch Lazarus-Wiki dabei.
Code: Alles auswählen
var
Stream: TResourceStream;
begin
// 'ResourceX' ist der Name den du gegeben hast.
Stream := TResourceStream.Create(HINSTANCE, 'ResourceX', RT_RCDATA);
try
LoadFromStream(Stream);
//hier weiter der gelesene Resource arbeiten
//....
finally
Stream.Free;
end;
end;
Re: HTML aus Ressourcen DLL lesen
Hallo zusammen
zunächst ganz herzlichen Dank für eure freundlichen Antworten.
Leider war es nicht besonders Hilfreich, da ich nicht nur ein Lazarus Rookie bin, sondern auch mit HTML sehr wenig zu tun hatte
Mit keiner Silbe habe ich erwähnt, das ich die HTML Ressourcen DLL selber gebaut habe. Deshalb lieber Theo, Dein Entsetzen war umsonst und verschwendete Energie
Die Funktion "ReadXMLFile" funktioniert zwar, wenn ich ich auf eine XML Datei gehe. Wie ich diese jedoch aus einer Ressouren DLL
auslesen kann weiß und verstehe ich derzeit nicht.
Sollte jemand von euch ein Anwendungsbeispiel haben, wie man HTML Daten aus einer Ressourcen DLL ausliest, würde ich mich wirklich sehr freuen.
Im Anhang ist mal ein Screen-Shot von einer der DLLs wie ich sie vorgefunden habe.
Vllt. Sollte ich den Hintergrund besser beleuchten, damit man sich ein besseres Bild machen kann.
Bei den von mir auszulesenden Ressourcen DLLs handelt es sich um ein 20 Jahre altes Microsoft Spiel.
Die einzelnen DLLs enthalten sowohl Stringtables als auch HTML Daten.
Deshalb ist ein Lesen über RT_Data meines Wissens nicht sinnvoll, da diese Daten unter HTML abgespeichert sind, lieber Soner.
Ich lasse mich jedoch (als Rookie) sehr gerne eines besseren belehren
Nun ich weis, das XML Daten in der IT als Schnittstellendaten verwendet werden.
Dies ist auch in diesem Ur alten Spiel der Fall.
So sehen z.B. technische Eigenschaften von Bordgeschützen anders aus, als Spezifikationen von Raumschiffen, Raketen usw.
Ich denke das war auch der Grund von Microsoft für eine derartige Zusammenstellung in den DLLs.
Wie auch immer, ich bin gerade dabei, ein Modifikationsprogramm zu schreiben, um z.B die Waffenreichweite / Stärke usw. verändern zu können. Die HTML Einträge werden nun innerhalb des Spiels ausgelesen, und wenn gewünscht angezeigt. Allerdings muss ich dazu nicht nur
die o.g. Modifikationen vornehmen, sondern auch diese HTMLs (XMLs) entsprechend anpassen.
Es mag durchaus sein, das dies alles heute anders gemacht wird. Ich bin jedoch in Frührente und möchte nicht völlig verblöden. Also habe ich mir vorgenommen weiterhin IT Probleme zu lösen und für mich, neue Sachen zu lernen, wozu ich während meiner meiner beruflichen Tätigkeit nie Zeit hatte. (Deshalb auch oft meine (für euch) abstrusen Fragen )
Viele Grüße
Lorca
zunächst ganz herzlichen Dank für eure freundlichen Antworten.
Leider war es nicht besonders Hilfreich, da ich nicht nur ein Lazarus Rookie bin, sondern auch mit HTML sehr wenig zu tun hatte
Mit keiner Silbe habe ich erwähnt, das ich die HTML Ressourcen DLL selber gebaut habe. Deshalb lieber Theo, Dein Entsetzen war umsonst und verschwendete Energie
Die Funktion "ReadXMLFile" funktioniert zwar, wenn ich ich auf eine XML Datei gehe. Wie ich diese jedoch aus einer Ressouren DLL
auslesen kann weiß und verstehe ich derzeit nicht.
Sollte jemand von euch ein Anwendungsbeispiel haben, wie man HTML Daten aus einer Ressourcen DLL ausliest, würde ich mich wirklich sehr freuen.
Im Anhang ist mal ein Screen-Shot von einer der DLLs wie ich sie vorgefunden habe.
Vllt. Sollte ich den Hintergrund besser beleuchten, damit man sich ein besseres Bild machen kann.
Bei den von mir auszulesenden Ressourcen DLLs handelt es sich um ein 20 Jahre altes Microsoft Spiel.
Die einzelnen DLLs enthalten sowohl Stringtables als auch HTML Daten.
Deshalb ist ein Lesen über RT_Data meines Wissens nicht sinnvoll, da diese Daten unter HTML abgespeichert sind, lieber Soner.
Ich lasse mich jedoch (als Rookie) sehr gerne eines besseren belehren
Nun ich weis, das XML Daten in der IT als Schnittstellendaten verwendet werden.
Dies ist auch in diesem Ur alten Spiel der Fall.
So sehen z.B. technische Eigenschaften von Bordgeschützen anders aus, als Spezifikationen von Raumschiffen, Raketen usw.
Ich denke das war auch der Grund von Microsoft für eine derartige Zusammenstellung in den DLLs.
Wie auch immer, ich bin gerade dabei, ein Modifikationsprogramm zu schreiben, um z.B die Waffenreichweite / Stärke usw. verändern zu können. Die HTML Einträge werden nun innerhalb des Spiels ausgelesen, und wenn gewünscht angezeigt. Allerdings muss ich dazu nicht nur
die o.g. Modifikationen vornehmen, sondern auch diese HTMLs (XMLs) entsprechend anpassen.
Es mag durchaus sein, das dies alles heute anders gemacht wird. Ich bin jedoch in Frührente und möchte nicht völlig verblöden. Also habe ich mir vorgenommen weiterhin IT Probleme zu lösen und für mich, neue Sachen zu lernen, wozu ich während meiner meiner beruflichen Tätigkeit nie Zeit hatte. (Deshalb auch oft meine (für euch) abstrusen Fragen )
Viele Grüße
Lorca
- Dateianhänge
-
- FL_Disco.PNG
- (23.23 KiB) Noch nie heruntergeladen
Re: HTML aus Ressourcen DLL lesen
Im beigefügten Beispiel siehst du, wie man eine als Ressource eingebundene HTML-Datei auslesen und in einem IpHtmlPanel anzeigen kann.
- Dateianhänge
-
- html_in_resource_2.zip
- (2.87 KiB) 71-mal heruntergeladen
Re: HTML aus Ressourcen DLL lesen
"Wie bitte?" ist kein Ausdruck des Entsetzens sondern ein Ausdruck des nicht Verstehens.
Es hat mich auch keine Energie gekostet dies zu schreiben. Energie kostet es, zu verstehen was du meinst.
Ich sehe auch in deinem Screenshot eigentlich kein HTML sondern nur XML unter einem HTML Label, deshalb bin ich immer noch etwas verwirrt.
Vielleicht können dir Windows Benutzer besser helfen als ich.
Re: HTML aus Ressourcen DLL lesen
Hallo zusammen, hallo theo, hallo wp_xyz
herzlichen Dank für eure netten Antworten.
@theo: Das die Begriffe "HTML" und "Stringtable" in einer Ressourcen DLL nur Labels sind war mir nicht klar. Ich bin davon ausgegangen das dies definierte Typen sind und diese auch nur mit einem Typisierten Reader zu lesen sind. Wie jedoch in der Antwort von wp_xyz zu sehen ist scheint es auch mit RT_Data lesbar zu sein. Also wieder etwas dazu gelernt. Danke
@wp_xyz: Danke für das Beispiel. Das muss ich noch erst genauer betrachten, da ich es nicht gänzlich verstehe. Du liest dieses XML aus einer XML Datei und nicht aus einer Ressoucen DLL. Hier benötige ich ein wenig zeit um dies zu verstehen und zu lernen. Dennoch ganz herzlichen Dank.
Denn die eingebetteten Units: IpHtml und Ipfilebroker kenne ich nicht und fördern mein Verständnis für die weitere Verarbeitung.
Also nochmals danke schön und
Viele Grüße
Lorca
herzlichen Dank für eure netten Antworten.
@theo: Das die Begriffe "HTML" und "Stringtable" in einer Ressourcen DLL nur Labels sind war mir nicht klar. Ich bin davon ausgegangen das dies definierte Typen sind und diese auch nur mit einem Typisierten Reader zu lesen sind. Wie jedoch in der Antwort von wp_xyz zu sehen ist scheint es auch mit RT_Data lesbar zu sein. Also wieder etwas dazu gelernt. Danke
@wp_xyz: Danke für das Beispiel. Das muss ich noch erst genauer betrachten, da ich es nicht gänzlich verstehe. Du liest dieses XML aus einer XML Datei und nicht aus einer Ressoucen DLL. Hier benötige ich ein wenig zeit um dies zu verstehen und zu lernen. Dennoch ganz herzlichen Dank.
Denn die eingebetteten Units: IpHtml und Ipfilebroker kenne ich nicht und fördern mein Verständnis für die weitere Verarbeitung.
Also nochmals danke schön und
Viele Grüße
Lorca
Re: HTML aus Ressourcen DLL lesen
Das "Label" war nicht so spezifisch gemeint, da ich als Linuxer von Windows Ressourcen DLLs nicht viel verstehe.Lorca hat geschrieben: ↑Do 6. Jul 2023, 10:23@theo: Das die Begriffe "HTML" und "Stringtable" in einer Ressourcen DLL nur Labels sind war mir nicht klar. Ich bin davon ausgegangen das dies definierte Typen sind und diese auch nur mit einem Typisierten Reader zu lesen sind. Wie jedoch in der Antwort von wp_xyz zu sehen ist scheint es auch mit RT_Data lesbar zu sein. Also wieder etwas dazu gelernt. Danke
Ich meinte einfach, dass da HTML drauf steht (Label/Etikett), aber kein HTML drin ist (Etikettenschwindel ).
Deshalb wird dir z.B. das von wp_xyz vorgeschlagene IpHtmlPanel hier nicht viel nützen.
Zum Aufbau der Ressourcen DLL kann ich nichts sagen.
Re: HTML aus Ressourcen DLL lesen
Wieso meinst du das? Im OnCreate-Handler des Formulars wird ein TResourceStream erzeugt, der die mit Namen und Typ angegebene Ressource ausliest und an das IpHtmlPanel weiterreicht. Wie kommt die HTML-Datei in die Ressource? Am einfachsten in den Projekt-Optionen unter "Ressourcen" und "Hinzufügen". Der Ressource-Name ist im Prinzip der Dateiname, aber ohne Endung. Und der Ressourcentyp steht in dem Formular. Beim Zugriff auf die Ressource muss dem Typ noch ein "RT_" vorangestellt werden - dafür ist dann auch die Unit LCLType in der Uses-Zeile nötig.
Code: Alles auswählen
var
stream: TStream;
begin
stream := TResourceStream.Create(HINSTANCE, 'LOREM_IPSUM', RT_RCDATA);
Das IpHtmlPanel ist ein einfacher Viewer für HTML-Dokumente. Erwarte aber nicht zu viel - keine CSS-Origien, kein JavaScript, kein HTML5; das Ding stammt noch aus dem letzten Jahrtausend. Den HTML-Text kann man als String (IpHtmlPanel.SetHtmlFromStr(string)), Datei (IpHtmlPanel.SetHtmlFromFile(dateiname)) oder eben als Stream übergeben (IpHtmlPanel.SetFromStream(stream)). Enthält der HTML-Text Verweise auf Bilder, braucht man die Unit IpFileBroker, wo der TIpHtmlDataProvider implementiert ist, über den man in dem Event OnGetImage das Laden des gewünschten Bildes erledigen kann.
Das oben geschickte Projekt habe ich von einem anderen Projekt abgeleitet, in dem Bilder vorkommen. In dem aktuellen HTML-Text gibt es aber keine Bilder, daher kann man das weglassen. Hier eine vereinfachte Version.
XML-Datei kannst du genauso in der Ressource speichern und auslesen (nur halt nicht im IpHtmlPanel anzeigen - aber du hattest nach dem Auslesen von HTML gefragt).
- Dateianhänge
-
- html_in_resource_2-neu.zip
- (2.66 KiB) 60-mal heruntergeladen