formular-resourcen in Binary

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
_frank_
Beiträge: 4
Registriert: Mo 4. Dez 2006, 15:26
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Plauen / Bamberg
Kontaktdaten:

formular-resourcen in Binary

Beitrag von _frank_ »

Hi,
wie mir aufgefallen ist, werden die Formulare in Lazarus anders als bei Delphi nicht als Ressourcen hinterlegt. Irgendwo hab ich gelesen, dass die aufgrund der Plattform-Unabhängigkeit gemacht wurde.
Gibt es einen Weg, die form-Ressourcen trotzdem zu lesen/ersetzen (ähnlich wie Updateresource,enumResources aus der Win32-API)?

Gruß Frank

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ja gibt es :p
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

_frank_
Beiträge: 4
Registriert: Mo 4. Dez 2006, 15:26
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Plauen / Bamberg
Kontaktdaten:

Beitrag von _frank_ »

ja und wie?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Lresources heisst die unit deines interesses.

Dort gibt es eine Deklaration LazarusResources: TLResourceList;

Mit dieser kannst du z.b. in deinem programm Lazarusresources.Find('Meinresourcenname')
ausführen.

das ist die klasse die du zurückbekommst

TLResource = class
public
Name: AnsiString;
ValueType: AnsiString;
Value: AnsiString;
end;

und in .Value stehen die Binärdaten drin kannst also in z.b. nen StringStream zuweisen und dann mit Image.LoadfromStream in ein Image laden oder so...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

_frank_
Beiträge: 4
Registriert: Mo 4. Dez 2006, 15:26
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Plauen / Bamberg
Kontaktdaten:

Beitrag von _frank_ »

ich habe mal wieder Zeit gefunden mich damit zu beschäftigen...
gibt es eine Möglichkeit, auf diese Resourcenliste mit einer fremden exe zuzugreifen? so wie es aussieht geht das nur mit der aktuellen Instanz.

Gruß Frank

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

mhm es gibt eigentlich immer eine Möglichkeit nur hast du hierzu kein hausmittel zur Verfügung, du musst die deklaration innerhalb des executables finden und dann auslesen.
Wie sinnvoll das ganze ist steht allerdings auf nem anderen Blatt. Die meissten Lazarus executables werden eh durch upx gejagt womit du das vergessen kannst. Und was soll das dann werden kann ja eigentlich nur n tool zum Forms klauen werden...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Christian hat geschrieben: Die meissten Lazarus executables werden eh durch upx gejagt womit du das vergessen kannst.
Bist du dir sicher mit upx? Seit FPC 2.0.4 funktionieren eigentlich die Compilereinstellungen zur Reduzierung der Größe der executables.

knight

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Die entfernen ja auch nur die Debugsymbole.
Ich finds auch net toll, aber denke das viele das so machen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

_frank_
Beiträge: 4
Registriert: Mo 4. Dez 2006, 15:26
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Plauen / Bamberg
Kontaktdaten:

Beitrag von _frank_ »

Christian hat geschrieben:mhm es gibt eigentlich immer eine Möglichkeit nur hast du hierzu kein hausmittel zur Verfügung, du musst die deklaration innerhalb des executables finden und dann auslesen.
Wie sinnvoll das ganze ist steht allerdings auf nem anderen Blatt. Die meissten Lazarus executables werden eh durch upx gejagt womit du das vergessen kannst. Und was soll das dann werden kann ja eigentlich nur n tool zum Forms klauen werden...
also gibt es keine Möglichkeit wir bei normalen Windows-Binaries á la EnumResources die resourcen der exe zu enumerieren? stimmt, bei upx klappt das natürlich dann nicht mehr.
es geht auch nicht um das klauen von formularen (zumindest mir). Ich hab diese Funktion für delphi-Formulare in meinem DFM-Editor, um z.b. Programme zu übersetzen, die keine Multilanguage-Engine mitbringen bzw. keine deutsche Übersetzung verfügbar ist. Oder wenn z.b. die Controlgröße für die Übersetzung nicht ausreicht. Ich wurde halt gefragt, ob ich das auch für lazarus-exen machen könnte, da ich ja die allgemeine lfm/lrs-unterstützung mit drin habe.

wo befindet sich diese Compilereinstellung wegen den Debug-Symbolen? hab schon danach gesucht, habs aber dann manuell per strip gemacht.

Gruß Frank

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

also gibt es keine Möglichkeit wir bei normalen Windows-Binaries á la EnumResources die resourcen der exe zu enumerieren?
Nein da die Resourcen als Konstante abgelegt werden.
Wenn du die Konstante alledings findest kannst sie warscheinlich mit den normalen routinen laden. Modifizieren würde ich allerdings mal ganz schnell vergessen
wo befindet sich diese Compilereinstellung wegen den Debug-Symbolen? hab schon danach gesucht, habs aber dann manuell per strip gemacht.
Im Tab Linken in den Compilereinstellungen, ich weiss allerdins nicht ob die Einstellung funktioniert. zumindest aus der IDE heraus.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Christian hat geschrieben:

Im Tab Linken in den Compilereinstellungen, ich weiss allerdins nicht ob die Einstellung funktioniert. zumindest aus der IDE heraus.
Für FPC größer gleich 2.0.4 funktioniert es.

knight

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Mal eine andere Frage: Was habe ihr gegen upx? Ist doch sehr Modem-freundlich...?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich hab eigentlich nichts gegen up nur finde ich es augenwischerei. Und wer hat huet bitte noch nen Modem ? Weiterhin packt man die Executables bei der bereitstellung eh obs nun ein installer oder Zip ist ... ich finds einfach überflüssig.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

@Christian

Deutschland ist eine DSL-Wüste. Die vollmundigen Versprechungen der Telekom-Verantwortlichen, die so sehnlich die Privatisierung vorantreiben wollten, sind bis heute nicht erfüllt. Die konnten und können es nicht besser oder gar billiger. Die wollten nur an das Eigentum aller Steuerzahler ran, als das noch Behörde war hat vieles besser funktioniert. Das es gelegentlich etwas holperig lief, lag mehr an den Vorschriften als an den Handelnden und für die Vorschriften sind Politiker verantwortlich.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Naja, es gibt tatsächlich aber sehr wenige gebiete wo kein 365 verfügbar ist ... selbst bei meinen Eltern auf dem Dorf hinterm Dorf hinterm Dorf gibt es stellenweise im Dorf 16.000er und flächendeckend 365er.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten