Deutsch
Forum

Bitte einmal diesen Code testen (XProfan11.0ß S2)

 
- 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: [...] 
KompilierenMarkierenSeparieren
Class 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

2 kB
Hochgeladen:30.10.2007
Ladeanzahl125
Herunterladen
 
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. ;)
 
31.10.2007  
 




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.
 
31.10.2007  
 



 
- 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?
 
01.11.2007  
 




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!
 
01.11.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.518 Betrachtungen

Unbenanntvor 0 min.
Jörg Sellmeyer30.09.2014
Peter Max Müller27.11.2011

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie