| |
|
|
- Seite 1 - |
|
Jörg Sellmeyer | Mit der aktuellen Subscriptionsversion stürzt der Code ab. Ich habs noch als .prf angehängt, falls es hier durch die Formatierung irgendwie beeinflußt wird. Dazu auch mal diese Nachricht im XProfan-Forum lesen: [...] KompilierenMarkierenSeparierenClass Fond = Name$(41),
Ident$(21),
Anzahl%,
Datum$(9),
WertSingle!,
WertSumme!,
Fond@,
ShowValues@
Proc Fond.Fond
Parameters Werte$
.Name$ = SubStr$(Werte$,1,|)
.Ident$ = SubStr$(Werte$,2,|)
.Anzahl% = Val(Translate$(SubStr$(Werte$,3,|),.,))
.Datum$ = SubStr$(Werte$,4,|)
.WertSingle! = Val(Translate$(Translate$(SubStr$(Werte$,5,|),.,),,,.))
.WertSumme! = Val(Translate$(Translate$(SubStr$(Werte$,6,|),.,),,,.))
EndProc
Proc Fond.ShowValues
Var s$ = Name$(40) = + .Name$ +
Ident$(20) = + .Ident$ +
Anzahl% = + Str$(.Anzahl%) +
Datum$(8) = + .Datum$ +
WertSingle! = + Str$(.WertSingle!) +
WertSumme! = + Str$(.WertSumme!)
MessageBox(s$,Fond,64)
EndProc
Window 0,0 - 900,400;1
Declare TestWerte$,MyTest$,T#,Test#[2]
TestWerte$ = 1|2|3|4|5|6
MyTest$ = SubStr$(TestWerte$,1,COMINVEST TOT.RET.PROTECT)
print Eins:,MyTest$
MyTest$ = SubStr$(TestWerte$,1,Nur ein Test)
Wenn ich HINTER die obenstehende Zeile ein Hochkomma setze, funktioniert es!
print Zwei:,MyTest$
t# = New(Fond,MyTest$)
With T#
.ShowValues()das hier knallt
das Weitere funktioniert
Print .Name$,
.Ident$,
.Anzahl%,
.Datum$,
.WertSingle!,
.WertSumme!
EndWith
WaitInput
Dispose Test#[]
Dispose T#
End
Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 30.10.2007 ▲ |
|
|
|
|
| |
|
- Seite 2 - |
|
Jörg Sellmeyer | Oha! Bin ich blöd. Jetzt habe ich tausendmal die Zeile gelesen und nie bemerkt, daß das der Fehler ist!!!! Ich habe immer SetWindowPos dabei im Kopf gehabt mit dem optionalen Parameter. Jetzt läufts natürlich. Ich habe XPSE nur zum Compilieren eingestellt und nicht als Interpreter, darum war das nicht eher aufgefallen. Tut mir leid für den Alarm, aber vielleicht kann Roland das als Fehlermeldungsoptimierung verwenden |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 31.10.2007 ▲ |
|
|
|
|
| Sicherlich nicht blöd, aber das fehlende Vertrauen zum kleinen xpse habe ich sehr wohl bemerkt.
PS: Ausschliesslich mit {$cleq} arbeiten. Ist man schneller in Summe. ;) |
|
|
| |
|
|
|
Dieter Zornow | Ich habe noch einmal getestet, mit dem XPSE läuft das Programm einwandfrei, weil es ja umgeschrieben wird. Wenn ich anschließend die .enh Datei starte läuft diese auch unter reinem XProfan. Ich denke es hängt irgendwie mit den Zeilen und der Schreibform zusammen, vielleicht das unbegrenzte XProfan. Als Exe läuft auch das Programm von Jörg ja auch ganz durch. Es ist zwar seltsam aber eine andere Erklärung kann ich mir nicht vorstellen. Vielleicht mal testen ob sich durch umstellen der Zeilen in Jörgs Programm etwas verbessert. Habe aber keine Zeit im Augenblick, ist schon nach 19:00 und ich gehe etwas Halloween feiern.
Gruß aus Bangkok
Dieter |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 31.10.2007 ▲ |
|
|
|
|
Jörg Sellmeyer | Ersetze mal die Zeile Window 0,0 - 900,400;1 durch Window 0,0 - 900,400 Ich hab auch lange gebraucht, bis ich es geschnallt habe. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 31.10.2007 ▲ |
|
|
|
|
RGH | Das ;1 beim Windowbefehl hat mit dem Problem des Programmes gar nichts zu tun. Bei Befehlen nimmt XProfan so viele Parameter wie gebraucht werden und macht dann mit den nächsten Programmzeile weiter. Überzählige Parameter werden einfach ignoriert und stören nicht. Man könnte theoretisch auch noch einen Roman dahinter schreiben. ;)
Zum eigentlichen, äußerst mysteriösen Problem:
Der Absturz tritt exakt nur dann auf, wenn eine der beiden Zeilen mit der SubStr$()-Funktion eine Länge zwischen 44 und 51 Zeichen hat. (Führende Leerzeichen vor dem MyTest = zählen da nicht mit, da diese der Interpreter schon beim Einlesen des Codes eliminiert.)
Seit gestern abend suche ich verzweifelt nach einem logisch erklärbaren Zusammenhang zwischen der Länge der Programmzeilen und dem Absturz bei Aufruf der Methode.
Gruß Roland
Nachtrag: Das gilt auch für einige andere Programmzeilen. |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 31.10.2007 ▲ |
|
|
|
|
Jörg Sellmeyer | Ok, bei mir lief es durch, aber nur solange ich im Debugmodus war. Ohne Debug knallts wieder. Seeehr merkwürdig. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 31.10.2007 ▲ |
|
|
|
|
| hm 51-44 ist 7, 7 ist auch die Länge von mytest$, woran es genau liegt kann aber sicher nur Roland mit vielen Messageboxen ermitteln. |
|
|
| |
|
|
| |
|
- Seite 3 - |
|
|
RGH | Ok, ich hab den Fehler gefunden und korrigiert!
Für Delphi-Nutzer: Delphi hat in bestimmten Fällen Probleme mit Strings als VAR-Parameter. In diesem Fall wurde PZeile[ZNr] per VAR-Paramerter an eine einfache Funktion übergeben, wobei PZeile eine (offenes) Array Of String ist, welches das Profan-Programm enthält und ZNr der Index einer (bereits existierenden) Programmzeile. Bei den genannten Zeilenlängen wurde dabei der String aus unerfindlichen Gründen, die vermutlich nicht einmal jemand bei Borland kennt, zerbröselt (geNULLt) und das führte dann beim späteren Zugriff (in unserem Beispiel bei der Suche nach der Funktionsdefinition) zum Crash.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 01.11.2007 ▲ |
|
|
|
|
| Kann kein Delphi - daher: Was sind Strings als Var-Parameter? |
|
|
| |
|
|
|
Jörg Sellmeyer | Prima! Hat sich der Nerv ja wenigstens gelohnt. Wann gibts denn mal wieder eine aktuelle Version? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.11.2007 ▲ |
|
|
|
|
RGH | iF
Kann kein Delphi - daher: Was sind Strings als Var-Parameter?
Da erfolgt die Übergabe nicht byValue (als Wert) sondern byReference (als Adresse). Das macht man dann, wenn man Änderungen am übergebenen String erlauben möchte. In anderen Sprachen verwendet man dafür u.a. die Kürzel byVal und byRef.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 01.11.2007 ▲ |
|
|
|
|
| Oder ein Sternchen oder manchmal auch das @ ... ok verstehe danke! |
|
|
| |
|
|