Customdrawn -> Theo
-
- 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
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
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
Re: Customdrawn -> Theo
Im CustomDrawn Tab sehe ich gar kein Label.
Probier mit einem TStaticText oder TCDStaticText.
Probier mit einem TStaticText oder TCDStaticText.
-
- 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
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
Re: Customdrawn -> 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.
-
- 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
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
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
Re: Customdrawn -> Theo
Dann hast du dieses Mal wahrscheinlich vergessen, den LCLWidgetType auf "customdrawn" umzustellen in den Projekteinstellungen.
-
- 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
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
Re: Customdrawn -> Theo
Dann weiss ich auch nicht weiter. Bei mir geht's. Lazarus 1.1 r39780 FPC 2.7.1 x86_64-linux-gtk 2
-
- 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
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.
oder
einbauen und einen entsprechenden Break setzen.
Danke Dir !
-Michael
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
Re: Customdrawn -> 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.
Aber da ist kaum die Ursache für dein Problem, sonst hätte ich es ja auch.
-
- 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
Sehr merkwürdig ....
Vielen Dank,
-Michael
Vielen Dank,
-Michael
-
- 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
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
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