Ich versuche einem FATAL ERROR auf die Spur zu kommen, der offenbar mit ADS im Zusammenhang steht - vielleicht ist ja schon mal jemand darüber gestolpert.
Siehe Quellcode-Auszug:
Das betreffende Programm läuft i.d.R. fehlerfrei (in einer "Massenverarbeitung mehrere hundert bis tausend mal) durch die Methode ::Convert_To_CWR_Zeichensatz( cString ).
Die Klasse CWR_Std_Class verwende ich als "Vaterklasse" (man verzeihe mir die vermutlich schlimme Begriffsverwendung) für diverse andere Klassen - die die Methoden verwenden, u.a. die Problem-Methode "Convert_To_CWR_Zeichensatz".
In CWR_Std_Class.PRG wird eine include-Datei (IKS_CWR.CH) verwendet, in der lediglich ein Array "aCWR_ZEICHENTABELLE" definiert ist.
Die Methode Convert_To_CWR_Zeichensatz ersetzt lediglich Zeichen in einem gegebenen String in einer FOR...NEXT-Schleife über das Array.
Das Programm stürzt wie gesagt nicht reproduzierbar nach einer unterscheidlichen Anzahl der Durchläufe der Methode ab, in einer der beiden Zeilen:
Code: Alles auswählen
FOR i = 1 TO LEN( aCWR_ZEICHENTABELLE ) // <- Abbruch-Fehler in dieser Zeile oder der nächsten!
cRet = STRTRAN( cRet, aCWR_ZEICHENTABELLE[i,1], aCWR_ZEICHENTABELLE[i,2] )
NEXT i
- Wenn der lokale ADS verwendet wird, kommt es nicht zum Absturz
...wobei ich nicht 100%ig sicher bin. Ich erinnere mich an sehr seltene Abstürze zu denen ich kein XPPFATAL.LOG gesucht habe. Es kam beim Testen aber so solchen Abstürzen, wenn ich mich recht erinnere.
- Wenn der "echte" ADS (Version 9 und 11) läuft, kommt es fast immer zum Absturz
Der Absturz erfolgt bei der Verarbeitung "größerer" Datenmengen, wenn dier Methode aber schon mehrere hundert mal ausgeführt wurde.
Ich habe den Zugriff auf das Array, das die zu ersetzenden Zeichen und die Ersatzzeichen enthält so verändert, dass das Array, das in der .CH-Datei beim Laden der Klasse einmalig in ein (gleiches) Klassenvariablen-Array eingelesen wird. Dann tritt der Fehler (scheinbar) nicht auf.
Kennt jemand so ein Problem und wenn ja - ist es durch den Workaround gelöst?
Gibt es sonst Probleme mit defines ggf. speziell mit Arrays?