Customdrawn -> Theo

Antworten
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

Customdrawn -> Theo

Beitrag von mschnell »

Hi Theo,
ich finde den Thread gerade nicht, in dem wir das diskutiert haben, also hier die Antwort:

Bei "CustomDrawn" (ein Form mit einem Label druaf bekomme ich einen

Runtime Error 201 in File TTinerp.pas at Line 482.

Da steht:

exc.opcode := exc.Code^[exc.IP];

exc.IP ist 1001

und die Größe des dynamischen Arrays exec.Code^ ist 1001, das Elemet 1001 existiert also nicht und der Runtime-Error kommt zurecht.

Gruß,
-Michael

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: Customdrawn -> Theo

Beitrag von theo »

Im CustomDrawn Tab sehe ich gar kein Label.
Probier mit einem TStaticText oder TCDStaticText.

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

Re: Customdrawn -> Theo

Beitrag von mschnell »

theo hat geschrieben:Im CustomDrawn Tab sehe ich gar kein Label.
Probier mit einem TStaticText oder TCDStaticText.


Aha, da scheint das Problem zu sein:

Ich habe kein CustomDrawn Tab und habe bisher auch nicht erwartet, dass es so etwas gibt, und bin deshalb davon ausgegangen, dass ich die "normalen" Controls verwenden soll und dann, wenn eines (noch) nicht implementiert ist, eine sinnvolle Fehlermeldung kommt. (Scheint mir doch eine vernünftige Annahme zu sein, beispielsweise verwenden "Windows" und "GTK" ja auch dieselben Tabs). Die Controls sollten dann zur Laufzeit nur eben etwas anders aussehen - wie es bei TForm ja bereits ist.

Wo hast Du denn das CustomDrawn Tab her ? (Das Package "customDrawn 0.0" steht bei Install/Uninstall Packages im "Install" Fenster, scheint also installiert zu sein.)

Gruß,
-Michael

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: Customdrawn -> Theo

Beitrag von theo »

mschnell hat geschrieben:Wo hast Du denn das CustomDrawn Tab her ? (Das Package "customDrawn 0.0" steht bei Install/Uninstall Packages im "Install" Fenster, scheint also installiert zu sein.)


Dann müsste das "Custom Drawn" Tab auch da sein mMn. IDE neu gebaut?
Afaik braucht man nicht unbedingt die Komponenten aus diesem Tab nehmen, es gehen auch die bei "Standard", aber man muss wissen, welche Komponenten unterstützt sind.

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

Re: Customdrawn -> Theo

Beitrag von mschnell »

ich baue die IDE dauernd neu, um Updates aus dem svn einzubinden.

Vielleicht werden dadurch Packes wieder de-installiert ?!?!?!?

Ja das scheint so.

Nachdem ich "Custom-Drawn" bei install/uninstall Packages erst de-installiert und dann wieder installiert habe (ohne dem wird das der "Save and Recompile" Knopf nicht aktiviert), zeigt es da da grüne "+" nicht mehr und das "customDrawn" Tab erscheint.

Nun habe ich "CDStaticText" und "CDButton" aus dem CustomDrwan Tab probiert und es passiert genau dasselbe, wie ich es mit den "normalen" Komponenten beschrieben habe.

Gruß,
-Michael

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: Customdrawn -> Theo

Beitrag von theo »

Dann hast du dieses Mal wahrscheinlich vergessen, den LCLWidgetType auf "customdrawn" umzustellen in den Projekteinstellungen.

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

Re: Customdrawn -> Theo

Beitrag von mschnell »

theo hat geschrieben:Dann hast du dieses Mal wahrscheinlich vergessen, den LCLWidgetType auf "customdrawn" umzustellen in den Projekteinstellungen.


Nee, ganz bestimmt nicht.

Wenn man den Widget Type default (bei mir = gtk2) mit "Custom Drawn" Komponenten verwendet, kommt eine "Excepton" und kein "RangeChek RunttimeError" und natürlich auch an einer ganz anderen Stelle im Code.

Hier passiert aber wieder genau das beschriebene: kein Unterschied, ob ich einen normalen "Label", einen normalen "StaticText", oder den "StaticText" aus dem CustomDrawn Tab nehme.

-Michael

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: Customdrawn -> Theo

Beitrag von theo »

Dann weiss ich auch nicht weiter. Bei mir geht's. Lazarus 1.1 r39780 FPC 2.7.1 x86_64-linux-gtk 2

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

Re: Customdrawn -> Theo

Beitrag von mschnell »

Kannst Du vielleicht mal einen Test für mich machen ?

Wie gesagt bekomme ich einen Rangecheck-Fehler in

TTinerp.pas at Line 482.

Da steht:

exc.opcode := exc.Code^[exc.IP];

und exc.IP ist bei mir 1001. (Es ist ein INT = Integer)
und Length(exc.opcode^) ist 1000.

Kannst du vielleicht nachschauen, ob bei Dir da tatsächlich RangeCheck aktiviert ist ?
(z.B indem Du vor diese Zeile exc.IP = 999999 schreibst. Dann muss ja mit Sicherheit ein RangeCheck Error kommen).

Kannst Du schauen, ob bei Dir auch exc.IP = 1001 wird und dabei Length(exc.opcode^) = 1000 ist ?

Diese Zeile wird vorher schon sehr häufig durchlaufen. Einfach Breakpoint setzen nützt also nix. Du könntest also Zeilen wie.

Code: Alles auswählen

if  exc.IP = 1001 then begin
  exc.IP := 1000;
end;


oder

Code: Alles auswählen

if  exc.IP > Length(exc.opcode^) then begin
  exc.IP := Length(exc.opcode^);
end;


einbauen und einen entsprechenden Break setzen.

Danke Dir !
-Michael

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: Customdrawn -> Theo

Beitrag von theo »

Ja, Rangecheck ist an und ja, mit exc.IP = 999999 gibt's einen Fehler.
Aber da ist kaum die Ursache für dein Problem, sonst hätte ich es ja auch.

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

Re: Customdrawn -> Theo

Beitrag von mschnell »

Sehr merkwürdig ....

Vielen Dank,
-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

Re: Customdrawn -> Theo

Beitrag von mschnell »

Hi Theo

Ich es habe nun mal auf einem andern Linux Rechner (auf dem ein älteres 32 Bit Suse läuft) probiert. Ich habe Lazarus, fpc und die svn-Directories noch nicht einmal neu hochgezogenm, sonden einfach kopiert.

Da läufts !!! Sowohl TCDStaticText aus Cusom drawn als auch der TSaticText aus dem normalen Tab und sogar der TLabel funktionieren.

Was das wohl ist....

Gruß,
-Michael

Antworten