Debuggen von Konstanten
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Debuggen von Konstanten
Hi,
wie schon des öfteren hier bemerkt, ich habe ein Projekt übernommen, in dem sehr viele Funktionen in Konstanten gepackt wurden. Jetzt habe ich nur ein dickes Problem, es gibt Fehlermeldungen, die bei der Ausführung eben dieser Konstanten auftreten. Habe ich überhaupt irgendwelche Chancen diese über den Debugger nachzuvollziehen? Die Funktionen darin werden ja nicht mehr aufgerufen und können somit ja nicht schrittweise durchlaufen werden. Gibt es evtl. irgendwelche Tricks dazu, oder ist es hoffnungslos? Ich habe schon versucht alles in reine Funktionen zu packen, aber da ist soviel drin, was jedesmal neue Fehler verursacht und sei es nur, dass LOCAL Variablen genutzt werden, die dann als Parameter übergeben werden müßten, oder weitere Konstanten, die wiederum andere Funktionen aufrufen. Also eine Verschachtelung usw.. Bevor ich nun damit anfange alles zu zerpflücken, würde mich doch interessieren, ob es evtl. einen anderen Weg gibt.
wie schon des öfteren hier bemerkt, ich habe ein Projekt übernommen, in dem sehr viele Funktionen in Konstanten gepackt wurden. Jetzt habe ich nur ein dickes Problem, es gibt Fehlermeldungen, die bei der Ausführung eben dieser Konstanten auftreten. Habe ich überhaupt irgendwelche Chancen diese über den Debugger nachzuvollziehen? Die Funktionen darin werden ja nicht mehr aufgerufen und können somit ja nicht schrittweise durchlaufen werden. Gibt es evtl. irgendwelche Tricks dazu, oder ist es hoffnungslos? Ich habe schon versucht alles in reine Funktionen zu packen, aber da ist soviel drin, was jedesmal neue Fehler verursacht und sei es nur, dass LOCAL Variablen genutzt werden, die dann als Parameter übergeben werden müßten, oder weitere Konstanten, die wiederum andere Funktionen aufrufen. Also eine Verschachtelung usw.. Bevor ich nun damit anfange alles zu zerpflücken, würde mich doch interessieren, ob es evtl. einen anderen Weg gibt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Debuggen von Konstanten
Konstanten nennt man die #DEFINES, also text oder numerische Konstanten.
Wenn Funktionen dabei sind, müssten das #TRANSLATE oder #COMMAND sein, diese Zeilen sollten irgendwie schon erscheinen, teilweise aber alles in einer Zeile ...
Beim Verständnis sollte die PPO Datei weiterhelfen, da dort diese Auflösung stattgefunden hat.
Wenn Funktionen dabei sind, müssten das #TRANSLATE oder #COMMAND sein, diese Zeilen sollten irgendwie schon erscheinen, teilweise aber alles in einer Zeile ...
Beim Verständnis sollte die PPO Datei weiterhelfen, da dort diese Auflösung stattgefunden hat.
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Debuggen von Konstanten
Hubert,
ich meinte Konstanten. Es wurden Funktionen über #defines "verwandelt". Was da drin steht, weiß ich, aber zur Laufzeit ist es übel die Fehler zu finden darin. Oder auch komplette Codeblöcke.
ich meinte Konstanten. Es wurden Funktionen über #defines "verwandelt". Was da drin steht, weiß ich, aber zur Laufzeit ist es übel die Fehler zu finden darin. Oder auch komplette Codeblöcke.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Debuggen von Konstanten
Hallo, Manfred -
ein Vorschlag, der "von hinten durch die Brust ins Auge" geht: dupliziere das Projekt in ein neues Verzeichnis, compiliere dort das Projekt mit Erstellung einer .ppo-Datei und nimm von dem entsprechenden Modul die .ppo-Datei und benenne sie (unter Löschung der Original-Datei) und .prg um. Compiliere noch einmal, und Du hast einen Quelltext, in dem die ganzen #DEFINEs aufgelöst sind. Damit sind natürlich auch xbeP_Close und Konsorten nur noch als Zahlenwert vorhanden, aber Du hast wenigstens eine Chance, den Programmtext zu sehen, der ausgeführt wird.
ein Vorschlag, der "von hinten durch die Brust ins Auge" geht: dupliziere das Projekt in ein neues Verzeichnis, compiliere dort das Projekt mit Erstellung einer .ppo-Datei und nimm von dem entsprechenden Modul die .ppo-Datei und benenne sie (unter Löschung der Original-Datei) und .prg um. Compiliere noch einmal, und Du hast einen Quelltext, in dem die ganzen #DEFINEs aufgelöst sind. Damit sind natürlich auch xbeP_Close und Konsorten nur noch als Zahlenwert vorhanden, aber Du hast wenigstens eine Chance, den Programmtext zu sehen, der ausgeführt wird.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Debuggen von Konstanten
Hi Georg,
die Idee hatte ich zwischendurch auch. So habe ich zumindest das derzeitige Problem gelöst bekommen. Aber nervig ist das trotzdem, weil der schön formatierte Quelltext dadurch natürlich in die Wicken geht.
die Idee hatte ich zwischendurch auch. So habe ich zumindest das derzeitige Problem gelöst bekommen. Aber nervig ist das trotzdem, weil der schön formatierte Quelltext dadurch natürlich in die Wicken geht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Debuggen von Konstanten
Hallo Manfred,
zeig doch mal ein solches Beispiel mit #DEFINES was dich nervt ...
zeig doch mal ein solches Beispiel mit #DEFINES was dich nervt ...
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Debuggen von Konstanten
Hi Hubert,
genervt hat das hier. Da hatte ich field-> gegen den DBF Namen getauscht, aber nicht realisiert, dass es in verschiedenen Tabellen genutzt wird
aber sowas ist auch vorhanden.
hier habe ich z.B. die Konstante gegen den originalen Code ausgtauscht. zu sehen ab Stuff().
Da sind dann teilweise wieder andere Konstanten untergebracht, die wiederum Funktionen aufrufen usw.
genervt hat das hier. Da hatte ich field-> gegen den DBF Namen getauscht, aber nicht realisiert, dass es in verschiedenen Tabellen genutzt wird
Code: Alles auswählen
#define SAG_JJJJ Stuff( SEEK_NRBUC( field->nr_buc ) , 3 , 2 , "")
hier habe ich z.B. die Konstante gegen den originalen Code ausgtauscht. zu sehen ab Stuff().
Code: Alles auswählen
#define LADE_JO ;
{||AAdd( ar_bbb , PadR( Stuff( SEEK_NRBUC( jo->nr_buc ) , 3 , 2 , "") + "B" ,10," ") +; // 1-10 <------- hier stand z.B. SAG_JJJJ drin
PADR_DATU( jo->dat_buc ,10," ") +; // 11-10
PadR( jo->txxt ,30," ") +; // 21-30
PadR( Str( N_B ,20,2) ,20," ") +; // 51-20
PadR( " " ,20," ") +; // 71-20
PadR( " " ,20," ") +; // 91-20
PadR( " " ,20," ") +; //101-20
PadR( " " ,20," ") ),; //121-20
AAdd( ar_clo , PadR( Stuff( SEEK_NRBUC( jo->nr_buc ) , 3 , 2 , "") + "B" ,10," ") +; // 1-10
PadR( DToS(jo->dat_buc) ,10," ") +; // 11-10
PadR( jo->txxt ,30," ") +; // 21-30
PadR( Str( N_B ,20,2) ,20," ") +; // 51-20
PadR( " " ,20," ") +; // 71-20
PadR( " " ,20," ") +; // 91-20
PadR( " " ,20," ") +; //101-20
PadR( " " ,20," ") ),; //121-20 bezahlt
ar_sum[1] := ar_sum[1] + jo->b_soll *(-1) ,;
ar_sum[2] := ar_sum[2] + jo->b_haben,;
su := AScan( ar_jsum , jo->jjjj ),;
IF( su = 0 ,AAdd( ar_jsum, jo->jjjj + Str( N_B ,20,2)), ar_jsum[su] := STRING_PLUS(ar_jsum[su], N_B ,5,20,2) ), su := AScan( ar_ssum , jo->jjjj ),;
IF( su = 0 ,AAdd( ar_ssum, jo->jjjj +Space(6) + Str( N_B ,20,2) + Space(40) ), ar_ssum[su] := STRING_PLUS(ar_ssum[su], N_B ,11,20,2) );
}
#define LADE_FIB ;
{||AAdd( ar_fib , PadR( fib->jjjj ,10," ") +; // 1-10
PadR( Stuff( SEEK_NRBUC( fib->nr_buc ) , 3 , 2 , "") ,10," ") +; // 11-10 <------- hier stand z.B. SAG_JJJJ drin
PADR_DATU( fib->dat_wer ,10," ") +; // 21-10
PadR( fib->txxt ,30," ") +; // 31-30
PadR( " " ,20," ") +; // 61-20
PadR( Str( fib->betrag ,20,2) ,20," ") +; // 81-20
PadR( fib->blz ,10," ") +; //101-10
PadR( fib->kt_nr ,10," ") +; //111-10
PadR( fib->az ,10," ") +; //121-10
PadR( " " ,20," ") ),; //131-20
AAdd( ar_clo , PadR( Stuff( SEEK_NRBUC( fib->nr_buc ) , 3 , 2 , "") + "K" ,10," ") +; // 1-10
PadR( DToS(fib->dat_wer) ,10," ") +; // 11-10
PadR( fib->txxt ,30," ") +; // 21-30
PadR( " " ,20," ") +; // 51-20
PadR( Str( fib->betrag ,20,2) ,20," ") +; // 71-20
PadR( fib->blz ,10," ") +; // 91-10
PadR( fib->kt_nr ,10," ") +; //101-10
PadR( fib->az ,10," ") +; //111-10
PadR( " " ,20," ") ),; //121-20
ar_sum[6] := ar_sum[6] + fib->betrag ,;
su := AScan( ar_fsum , fib->jjjj ) ,;
IF( su = 0 ,AAdd( ar_fsum, fib->jjjj + Str( fib->betrag ,20,2) ) , ar_fsum[su] := STRING_PLUS(ar_fsum[su], fib->betrag ,5,20,2) ) ,;
su := AScan( ar_ssum , fib->jjjj ) ,;
IF( su = 0 ,AAdd( ar_ssum, fib->jjjj +Space(6)+ Space(20) + Str( fib->betrag ,20,2) + Space(20) ), ar_ssum[su] := STRING_PLUS(ar_ssum[su],fib->betrag,31,20,2) ) }
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Debuggen von Konstanten
Ja, nach so einem DEFINE kann man ALLE nachfolgenden Zeilenangaben vergessen.
SUPER hatte die Zeilen anfangs (immer noch ?) um eine Zeile verschoben, aber nach so einem Konstrukt sind das sehr viel mehr.
SUPER hatte die Zeilen anfangs (immer noch ?) um eine Zeile verschoben, aber nach so einem Konstrukt sind das sehr viel mehr.
Gruß
Hubert
Hubert
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Debuggen von Konstanten
ich würde die ppo Datei im Editor laden, das Programm ganz normal debuggen. Im Editor kannt Du ja dann
die Zeile in der Probleme auftauchen ganz normal anspringen
die Zeile in der Probleme auftauchen ganz normal anspringen
Gruß
Klaus
Klaus
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Debuggen von Konstanten
Hallo Klaus,
das hatte ich ja so ähnlich gemacht. NUR, wenn ich das überall mache, wo es auftaucht, dann bin ich reif für die Klapse. Das zieht sich nämlich breit durch den ganzen Code.
das hatte ich ja so ähnlich gemacht. NUR, wenn ich das überall mache, wo es auftaucht, dann bin ich reif für die Klapse. Das zieht sich nämlich breit durch den ganzen Code.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Debuggen von Konstanten
Ich würde so etwas in eine Funktion ohne Parameter umwandeln:Manfred hat geschrieben:Hi Hubert,
genervt hat das hier. Da hatte ich field-> gegen den DBF Namen getauscht, aber nicht realisiert, dass es in verschiedenen Tabellen genutzt wird...Code: Alles auswählen
#define SAG_JJJJ Stuff( SEEK_NRBUC( field->nr_buc ) , 3 , 2 , "")
Code: Alles auswählen
FUNCTION SAG_JJJJ()
RETURN( )
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Manfred
- Foren-Administrator
- Beiträge: 21199
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Debuggen von Konstanten
Uli,
so weit war ich auch schon. Aber dann hat es geknallt, weil darin wieder LOCAL Vars waren, die dann natürlich nicht bekannt sind.
so weit war ich auch schon. Aber dann hat es geknallt, weil darin wieder LOCAL Vars waren, die dann natürlich nicht bekannt sind.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Debuggen von Konstanten
Das ist natürlich ärgerlich, aber wenn es immerhin LOCALs sind, würde ich mir die Mühe machen und diese als Parameter übergeben:Manfred hat geschrieben:Uli,
so weit war ich auch schon. Aber dann hat es geknallt, weil darin wieder LOCAL Vars waren, die dann natürlich nicht bekannt sind.
Code: Alles auswählen
FUNCTION SAG_JJJJ( xLocal1 )
RETURN( )
Aufruf:
SAG_JJJ( @xLocal1 )
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück