platzierte visuelle Objekte nachträglich ableiten

Für Fragen rund um die Ide und zum Debugger
mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Klar kann man alle Komponenten - auch "visuelle" - programmatisch (also in nicht visueller Weise) kreieren und benutzen. Aber mit Hilfe einer visuellen Vorgänger-Komponente wäre es eben praktischer.

-Michael

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 frag mich langsam was du willst willst du sie Programmtechnisch erstellen nur um sie nicht in die ide eincompilieren zu müssen ?
Oder gehts dir nur um die zeit wärend du die Komponente baust ? In dem fall kannst du die 4 zeilen code um sie programmtechnisch zu erstellen ruhig ma schreiben also allein was du in diesem thread geschrieben hast dürfte für die nächsten 50 Komponenten reichen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

>>Fpc 2.2.x wird packaging mitbringen damit können dann komponenten "on-the-fly" eingebunden werden.

Jetzt, wo ich es einmal gemacht habe, verstehe ich was das heißt: Momentan kann man in Lazarus visuell platzierte Komponenten überhaupt nicht debuggen (In Delphi kann man den Sourcecode einer installierten Komponente in's Projekt aufnehmen und dann auch debuggen.) Wie Du sagst sind Verbesserungen ja in Sicht :)

-Michael

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben:Ich frag mich langsam was du willst


Es geht um Erweiterungen von visuellen Standard-Komponenten, die ich nur in einem Projekt brauche und vermutlich nie wieder. Dafür ist es doch wenig Sinnvoll, die Komponente zu installieren. (Momentan brauche ich das überhaupt nicht, ich bin momentan nur GUI-losen Programmen interessiert, aber ein Kollege kam mit dieser Frage und da ich das Problem schon oft hatte und in Delphi nicht lösen konnte, wollte ich wissen, ob Lazarus da eine Methode für hat.)

-Michael

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 »

Es wäre villeicht sinvoll wie ich angeführt habe das wenn packaging da ist die komponenten ans projekt gebunden werden können und beim öffnen des projektes automatisch mitinstalliert werden.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben:Es wäre villeicht sinvoll wie ich angeführt habe das wenn packaging da ist die komponenten ans projekt gebunden werden können und beim öffnen des projektes automatisch mitinstalliert werden.


Das ist, glaube ich, genau die richtige Idee !

- Man kann in einem Projekt bestimmte Units als installierbare Komponenten (unter Angabe des Paketes, in dem sie installiert werden sollen) definieren. (Ich bin bei meinen Versuchen ziemlich durcheinander gekommen, weil die Unit, die ich für die Komponente erzeugt habe, immer zu dem vorher geöffneten Projekt zugeschlagen wurde, was damit eigentlich nichts zu tun hatte.)

- Man kann diese Unit(s) kompilieren (wie ein Projekt) und installiern (statt starten). Das Installieren gilt zunächst nur für das laufende Projekt. Wenn man sie global installieren will, muss man das zusätzlich machen. Beim Neu Öffnen des Projektes ist die Komponente wieder da.

- Wenn man sie installiert hat (um eine neue zu machen erst 'mal ein Dummy, das von einer Standard-Komponente abgeleitet ist), kann man sie platzieren.

- Wenn man eine platzierte Komponente verwendet, deren Unit im Projekt ist,
. - Wird sie beim Starten des Projektes automatisch übersetzt (wenn geändert).
. - Kann man darin Breakpoints setzen etc.

Das sollte mit Packaging doch möglich sein, oder ?

-Michael

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 »

Mit den breakpoints bin ich mir da sehr unsicher du kannst ja auch keine dll auf der aufrufenden anwendung debuggen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Bei Delphi geht's (sagt zumindest mein Kollege)
-Michael

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 »

Nein, kann gar nicht gehen man kann mit Delphi dlls debuggen kann man auch mit Lazarus aber nicht aus der applikation heraus die die dll benutzt
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Nicht dass wir uns falsch verstehen. Ich meine nicht das Verhalten des visuellen Objekts beim Platzieren auf dem Form in der IDE. Ich glaube nicht, dass man das mit Delphi debuggen kann. Da ist wahrscheinlich Blindflug angesagt oder irgend ein Trick mit einer zweiten Delphi-Instanz oder so. Ich meine das Verhalten des Objekts im laufenden User-Programm. (Wie gesagt ist das Verhalten in den beiden Fällen sowiseo nur dann unterschiedlich, wenn man mit "csdesigning explizit eine Unterscheidung programmiert.)

Ich verstehe ehrlich gesagt nicht, was das mit DLLs zu tun hat. Die Unit mit dem visuellen Objekt wird doch statisch in das User-Programm eingebunden. Da ist doch eigentlich kein Unterschied zu nicht visuell platzierten Objekten. Die IDE muss beim Debuggen nur wissen, wo sie den Sourcecode finden soll. Vielleicht geht das ja sogar jetzt schon, wenn man die Unit mit dem visuellen Objekt (das man vorher korrekt installiert hat) in's Projekt einbindet. (Ich habe momentan noch etwas Probleme mit dem Projekt-Management und dem Installieren von Paketen in Lazarus klarzukommen.)

-Michael

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 »

Beim debuggen des user programms funktioniert das solang debugsymbole drin sind. ich dachte du meinst in der ide. und packages werden ähnlich zu dlls auch dynamisch gelinkt sind viele ähnliche prinzipien daher hab ich das verglichen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Hast Du schon 'mal versucht, eine visuell platzierte Komponente bei der Arbeit im User-Programm zu debuggen ?

-Michael

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 ? versucht schon nur meisst gibt es keine debugsymbole in der lcl es sei denn man compiliert sie so ...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Ich hab's gerade getestet. Funktioniert in Lazarus jetzt schon genau wie in Delphi.

Wenn der Sourcecode einer visuellen Komponente (die in irgendeinem Package installiert ist) mit in's Projekt aufgenommen wird, kann man darin Breakpoints setzen und zur Laufzeit des Programms normal debuggen. Wenn man den Quellcode ändert, wird die Unit neu übersetzt und im neu gebauten Programm verwendet.

In Lazarus kann man aber (andres als in Delphi) auch in Komponenten hinein steppen, deren Sourcen nicht ins Projekt eingebunden sind.

Als ich aber versucht habe, da Breakpoints zu setzen, sind komische Sachen passiert. Das ist wohl nicht zulässig.

-Michael

Antworten