GLBasic forum

Main forum => Bug Reports => Topic started by: amarliani on 2009-Mar-08

Title: Fehler in INLINE?
Post by: amarliani on 2009-Mar-08
Seit der neuen Version 6.184 geht ein Teil meines INLINE-Codes nicht mehr. Es handelt sich genauer gesagt um die Base64-Verschlüsselung von Moru aus dieser Quelle hier:

http://gamecorner.110mb.com/index.php?page=base64-encode-decode-library

Bis zur Version 6.174 lief das Ganze problemlos, Update auf 6.184: geht nicht mehr, Update rückgängig gemacht: geht wieder.

Irgend eine Idee? Ach ja, mittlerweile hab ich eine Premiumlizenz mit NET und 3D...
Title: Re: Fehler in INLINE?
Post by: Schranz0r on 2009-Mar-08
öhm, ich seh in dem Code kein INLINE  :|
Exe schmiert trotzdem weg, komisch !
Title: Re: Fehler in INLINE?
Post by: amarliani on 2009-Mar-09
Äh... ups. mein Fehler :( . Der INLINE-Code stammte von TaToad aus dem Thread hier:

http://www.glbasic.com/forum/index.php?topic=2788.0

Ich verwend beide Teile nur zusammen (Überprüfung des verschlüsselten Files mit CRC32), daher das Mißgeschick. Aber klappen tuts immer noch nicht, und ich find keinen Fehler drin.  :'(
Title: Re: Fehler in INLINE?
Post by: Schranz0r on 2009-Mar-09
Schick doch bitte mal den Code mit dem "Fehler"...
Title: Re: Fehler in INLINE?
Post by: amarliani on 2009-Mar-09
Anbei. Das Testprogramm sollte im Window-Titel zusätzlich anzeigen "Praxis Dr. Marliani". Geht mit der alten GLB-version, aber nicht mehr mit der neuen, wie gesagt.

[attachment deleted by admin]
Title: Re: Fehler in INLINE?
Post by: Kitty Hello on 2009-Mar-09
Der Fehler liegt warscheinlich in dem String-Handling. Da habe ich was geändert.


Ah!

Code (glbasic) Select

group$ = CHR$(u) + group$ // add to decoded temp-group


Das "u" ist bei mir zwishendurch 0.
Bitte  mit der alten Version: Was sind die Werte für "u" und was ist der Grou$ am Schluss?

Title: Re: Fehler in INLINE?
Post by: amarliani on 2009-Mar-09
Also das "u" wird zwischendurch immer mal wieder 0, das ist normal. Hier mal ein Auszug aus dem Trace der alten Version mit den ersten paar Durchläufen:

u     Group$
------------
104   ""
97     h
90     ah
0      Zah
114   ""
97     r
110   ar
0      nar
112   ""
116   p
112   tp
0      ztp
120   ""
97    x
114  ax
0     rax

usw. Wenn mans richtig rum zusammensetzt, kommt so "Zahnarztpraxis" raus. Endwert für u ist 0, für Group$ ist "i" (insgesamt gibt der String "Zahnrztpraxis Dr. Andrea Marliani")
Title: Re: Fehler in INLINE?
Post by: Kitty Hello on 2009-Mar-09
Musst Du umbauen. Wenn 0, dann leer machen.
Title: Re: Fehler in INLINE?
Post by: amarliani on 2009-Mar-09
Sorry, aber ich steh glaub ich auf der Leitung. Genau so funzt es, soweit ich den Code begriffen habe, doch schon. Die Werte für u und Group$ sind um je einen Schritt verschoben. u enthält immer den Wert, der zu Group$ im nächsten Schritt zugefügt wird, und 0 bedeutet Group$ an Teil$ anfügen und dann leeren. Zumindest hab ich Morus Code und den Trace so verstanden:

1. Schritt: u=104 (ASCII h), Group$ leer
2. Schritt: u=97 (ASCII a), Group$="h"
3. Schritt: u=90(ASCII Z), Group$="ah"
4. Schritt: u=0, Group$="Zah"
5. Schritt: u=114 (ASCII r aus der nächsten Dreiergruppe), Group$ wieder leer.

usw. Und, wie gesagt, bis Version 6.174 klappte der Code völlig einwandfrei. Irgend eine Idee, was da schief laufen könnte mit der neuen Version?
Title: Re: Fehler in INLINE?
Post by: Kitty Hello on 2009-Mar-09
Der Schritt 5 geht jetzt nicht mehr.
group$ = "Zah0nar0ztp0rax" im neuen GLBasic, wobei "0" ein '\0', also CHR$(0) Character ist.
Das ist a grad in Deinem Fall ein Fehler.
Sorry, aber das war wichtig, weil nur so kann man jetzt Binäre Dateien laden.
Title: Re: Fehler in INLINE?
Post by: amarliani on 2009-Mar-10
OK, begriffen, danke. Muß ich den Code halt entsprechend umbauen. Danke für die Hilfe!