LL14 - RTF-Feld auf Label - XBase stürzt ab [ERLEDIGT]

Moderator: Moderatoren

Antworten
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

LL14 - RTF-Feld auf Label - XBase stürzt ab [ERLEDIGT]

Beitrag von ingo »

Moin!
Ich habe mal wieder einen Fehler produziert, den ich nicht verstehe - vielleicht hat jemand einen Tipp:
Wenn ich in einem Label-Projekt ein RTF-Feld einbaue, stürzt meine Anwendung ab.
Ohne RTF-Feld werden die Labels gedruckt.

Diese Infos habe ich gesammelt, finde aber keine Antwort:
XBase_Fehlermeldung.jpg
XBase_Fehlermeldung.jpg (53.25 KiB) 6353 mal betrachtet
XPPERROR.LOG
XPPERROR.LOG
(1.37 KiB) 260-mal heruntergeladen
LLDebug.txt
List&Label-Debugger Ausgabe
(76.12 KiB) 250-mal heruntergeladen
Dazu noch ein paar Erläuterungen:

WERBUNG_AUFKLEBERDRUCK_FUNKTIONEN:DRUCK_SCHLEIFE(291)
ist das Statement:
nRet := LlPrint( ::hJob)

LLPRINT(653):
RETURN DllExecuteCall(tplLlPrint, hLlJob) // ...aus der mit LL14 gelieferten cmtbtll14.prg (geringfügig modifiziert)
...Modifizierungen:
- Lizenzcode
- LlSetOption( xVar, LL_OPTION_INCREMENTAL_PREVIEW, .F. ) -> immer nach Jobopen

Die ERRORSYS.PRG ist Alaska-Standard.

...also falls jemand dazu etwas einfällt - ich bin fürchterlich gespannt!
Zuletzt geändert von ingo am Di, 04. Aug 2009 10:18, insgesamt 1-mal geändert.
Schönen Gruß, Ingo
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 367
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: LL14 - RTF-Feld auf Label - XBase stürzt ab

Beitrag von Klaus Schuster »

Hi Ingo,

1. Ich habe mir mal den Debug-Text angesehen, und kann kein LlDefineVariableExt(..) finden, in der Du L&L kundtust, dass der Inhalt ein RTF-Text ist (LL_RTF).
Gefunden habe ich nur LL_TEXT und ein LL_NUMERIC in LlDefineVariableExt(1,'Empf_Umsatz_Vorjahr','0.00',0x08000000,0x00000000).
In der Programmierer-Referenz von L&L findest Du Hinweise zum besonderen Umgang mit RTF-Texten (z.B. Seite 24 oben). Ich selbst habe noch nicht mit RTF-Texten gearbeitet.

2. Möglicherweise enthält der RTF-Text auch Sonderzeichen die L&L durcheinanderbringen

3. Geht keiner der RTF-Texte? Oder einzelne doch?

3. Stutzig mach mich auch die Fehlermeldung in der letzten Zeile:
CMCT14 : 13:03:38.875 0000129c clsDialog()::ct(): wrong thread of parent window (0X00270F04)!
Kann es sein, dass ::hJob zwischenzeitlich geändert wurde? Ich weiß, dass es ohne RTF läuft. Da müsstest Du Dir vielleicht mal der Wert von ::hJob kurz vor dem Absturz ansehen.

Um weiteres zu vermuten, wäre es hilfreich, wenn Du den Code von DRUCK_SCHLEIFE() anhängen würdest.

Gruß
Klaus
Gruß Klaus
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: LL14 - RTF-Feld auf Label - XBase stürzt ab

Beitrag von ingo »

Moin Klaus,

und schon mal herzlichen Dank für dein Interesse und die Mühe!
Als ich deine Antwort gelesen habe, ist mir aufgefallen, dass ich mich falsch ausgedrückt habe:
Ich übergebe kein RTF-Feld, sondern ich habe über den Designer ein Feld vom Typ "formatierter Text" eingefügt.
In der lbl-Datei (als txt hochgeladen) in Zeile 556 ist der Eintrag zu sehen.
Der Testdruck im Designer funktioniert auch prima.

Den Eintrag "wrong Thread of Parent Window" finde ich in JEDER combit-Logdatei meiner Druckprogramme, ich hatte schon oft danach gesucht, was die Ursache sein könnte aber nix gefunden.
Da die Meldung sonst jedenfalls keinen Fehler nach sich zieht, habe ich mich entschlossen das zu ignorieren.
So wie ich List&Label verstehe, übergibt man beim LlPrintWithBoxStart() das Handle des aufrufenden Windows:

nRet := LlPrintWithBoxStart( ::hJob, ;
LL_PROJECT_LABEL, ;
sName, ;
IKS_LL_Option, ;
LL_BOXTYPE_BRIDGEMETER, ;
oCallWindow:GetHWND(), ;
::BoxTitle )
...und das scheint mir korrekt zu sein.
(Wenn du dir die "Druckschleife" anschaust, bitte ich um Nachsicht. Der Code ist sicher nicht hübsch...)

Übrigens ist der Fehler nicht an ein Label gebunden - egal auf was für einem Formular ich ein Feld "formatierter Text" einbaue, immer gibt's den Absturz.

Schönen Gruß,

Ingo
Dateianhänge
VWK_Aufkleber_BriefRTF.txt
Label-Definition
(10.47 KiB) 232-mal heruntergeladen
Druckschleife.prg
Methode Druckschleife
(7.21 KiB) 275-mal heruntergeladen
Schönen Gruß, Ingo
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 367
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: LL14 - RTF-Feld auf Label - XBase stürzt ab

Beitrag von Klaus Schuster »

Hi Ingo,

gerne geschehen!

Lade doch bitte den Quellcode der Methode ::DefineVariablen() hoch. Ohne diesen bleiben Fragen offen.

Bis dann
Klaus
Gruß Klaus
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: LL14 - RTF-Feld auf Label - XBase stürzt ab

Beitrag von ingo »

Moin Klaus,
ich habe die .prg-Datei hochgeladen.
(Bin jetzt fast eine Woche weg - nicht wundern, wenn ich mich nicht melde...)
Danke, Ingo
Dateianhänge
Werbung_Aufkleberdruck.PRG
Quellcode
(20.57 KiB) 298-mal heruntergeladen
Schönen Gruß, Ingo
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: LL14 - RTF-Feld auf Label - XBase stürzt ab

Beitrag von ingo »

...dann fehlte ja noch die Klasse Druckstandard.
Ingo
Dateianhänge
druckstandard.prg
Class Druckstandard
(18 KiB) 277-mal heruntergeladen
Schönen Gruß, Ingo
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 367
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: LL14 - RTF-Feld auf Label - XBase stürzt ab

Beitrag von Klaus Schuster »

Hi Ingo,

ich habe mir den Code angesehen und bin auf folgende Stelle gestossen die möglicherweise einen Seiteneffekt auslösen könnte:

Code: Alles auswählen

         IF SKUND->KFZ <> SLAND->KFZ .AND. .NOT. Lesen( "SLAND", 1, SKUND->KFZ )
            GO BOTTOM
            SKIP
         ENDIF
Bist Du Dir sicher, dass die Bewegung stets in der gewünschten Tabelle stattfindet?

Aufgefallen sind mir, dass Du
  • die Klassen nicht initialisierst
    nicht überprüfst, ob ::hJob := LlJobOpen(-1) erfolgreich ausgeführt wurde
    LlJobOpen(-1) sowohl in der Klasse DruckStandard Methode :Layout(), als auch in der Klasse Werbung_Aufkleberdruck_Funktionen die von DruckStandard abgeleitet wird verwendest
LlJobOpen(-1) würde ich in eine INI-Methode der Klasse DruckStandard einpacken und mit einer Fehlerprüfung versehen.

Leider erklärt dies alles nicht, warum es unter bestimmten Bedingungen geht, und unter anderen nicht. Da bleiben mir nur zwei Ideen:

1. Die Daten sind korrupt
2. Irgendetwas auf der Maschine führt dazu, dass die geladenen DLLs nicht funktionieren.

Sorry, dass ich Dir nicht mehr helfen konnte
Klaus
Gruß Klaus
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: LL14 - RTF-Feld auf Label - XBase stürzt ab

Beitrag von ingo »

Hi Klaus,

Bei dem "SKIP" ist das wohl nicht schön programmiert, aber das klappt: der SKIP wird für SLAND ausgeführt, da in Lesen() ein SELECT ausgeführt wird, SLAND ist also in jedem Fall aktiv, wenn die Bedingung erfüllt ist.
Die Erfolgsprüfung von LLJobOpen werde ich mir zu Herzen nehmen (wenn mich das weiterbringt, folgt hier ein Kommentar.)
Das es LlJobopen sowohl in der Przedur als auch der Methode gibt ist m.E. OK (wenn wohl auch nicht elegant.)

Grundsätzlich gibt es in meinem Code eine ganze Menge, was eigentlich überarbeitungswürdig ist. Das liegt daran, dass ich, als ich anfing mit XBase zu programmieren, die Möglichkeiten nicht komplett evrstanden habe - und sicher immer noch eine Menge besser kapieren und umsetzen könnte. Und jetzt ist es so, dass ich mich immer, wenn ich Leerlauf habe mit dem Überarbeiten beschäftige...

Jedenfalls vielen Dank für deine Mühe!
(Wenn wir uns irgendwann mal begegnen hast du mindestens ein Bier gut...)

Ingo
Schönen Gruß, Ingo
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: LL14 - RTF-Feld auf Label - XBase stürzt ab

Beitrag von ingo »

...rausbekommen habe ich leider nichts. Eine Erfolgsprüfung des LlJobOpen() habe ich auch nicht gefunden - wie geht das?
Ich werde die Fehlersuche auf eine Zeit verschieben, wenn mal wieder richtig wenig zu tun ist und bis dahin damit leben, dass in "meinen" List&Label-Projekten keine RTF-Felder (bzw. "formatierter Text" laut Designer) verwendet werden können.
Danke für's Code-Lesen und nachdenken!

ingo
Schönen Gruß, Ingo
Antworten