Seite 2 von 2

Verfasst: 03.03.2008 23:35
von HeX0R
Du hast deine char-Variable nicht zufällig als Byte irgendwo deklariert und in diesem seltsamen Beispiel für uns unterschlagen ?
Weil das würde dein Problem erklären...

[Edit]
zzz... der alte Sack war schneller als ich ;)

Verfasst: 03.03.2008 23:39
von Tompazi
der Code ist unverändert so wie er da steht :?

signed Byte??
Was ist das? :?


Danke Tompazi

Verfasst: 03.03.2008 23:50
von Kaeru Gaman
wie der name sagt, ein Byte mit Vorzeichen.

bei einer signed variable wird das höchste Bit als vorzeichen benutzt.

das ist bei allen variablen so, nur bei byte kommt es eben sehr früh zum tragen.

Code: Alles auswählen

a.b = 222
Debug a

b.w = 44444
Debug b

c.l = 3333333333
Debug c
die werte werden korrekt zugewiesen, aber bei den zahlen ist jeweils das höchste Bit gesetzt,
also werden sie beim ausgeben als negative zahlen interpretiert...

...und jetzt machst du mal die Help auf, und schaust mal ins Kapitel Variablen, Typen und Operatoren
Byte .b 1 Byte -128 bis +127
Word .w 2 Byte -32768 bis +32767
Long .l 4 Byte -2147483648 bis +2147483647

Verfasst: 03.03.2008 23:52
von HeX0R
Naja, aber wenn der Code so tatsächlich bei ihm auch ist, ist die Char-Variable gar nicht definiert und wird somit automatisch zu einer Long.
Würde also keine Probleme verursachen.

Verfasst: 03.03.2008 23:58
von Kaeru Gaman
irgendwo muss er aber so was reingemurxt haben.
wenn er ne 240 als -16 ausgegeben bekommt, ist das eindeutig ne signed byte.

Code: Alles auswählen

a.b = 240
Debug a

Verfasst: 04.03.2008 00:02
von Kiffi
Tompazi hat geschrieben:vielleicht weil ich noch immer die Demo Version habe?
welche Version denn?

Grüße ... Kiffi

Verfasst: 04.03.2008 00:20
von walker
Kiffi hat geschrieben:
Tompazi hat geschrieben:vielleicht weil ich noch immer die Demo Version habe?
welche Version denn?

Grüße ... Kiffi
vielleicht 3.80 :shock:

wie auch immer...

hier mal Dein Code etwas umgeschrieben (nur grob... ist sicher noch Verbesserungswürdig) und auch mit Einrückungen versehen... das macht's lesen viel einfacher... :wink:

Code: Alles auswählen


If OpenWindow(0,0,0,100,100,"File Encoder",  #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ButtonGadget(0,5,5,50,25,"load file")
ButtonGadget(1,5,30,50,25,"encode")
ButtonGadget(2,5,55,50,25,"decode")

Repeat
Event = WaitWindowEvent()
Select Event
    Case #PB_Event_Gadget
        Select EventGadget()
            Case 0
                file$ = OpenFileRequester("Select a file","","Text (*.txt)|*.txt",0)
            Case 1    
                If file$
                    OpenFile(0,file$)
                    l = Lof(0)    
                    For a = 1 To l
                        char = ReadCharacter(0)                        
                        new_char.l= char-28
                        If new_char<0
                            new_char=255-new_char
                        EndIf  
                        char$=Chr(new_char)     
                        text$ = text$ +  char$
                    Next a
                    CloseFile(0)
                    CreateFile(0,file$)
                    WriteString(0,text$)
                    CloseFile(0)
                    text$ = ""
                Else
                    MessageRequester("No file!!","No file loaded")
                EndIf
            Case 2
                If file$
                    OpenFile(0,file$)
                    l = Lof(0)                   
                    For a = 1 To l                    
                        char = ReadCharacter(0)
                        new_char=char+28
                        If new_char>255
                            new_char=new_char-255
                        EndIf   
                        char$=Chr(new_char)                            
                        text$ = text$ +  char$                        
                    Next a
                    CloseFile(0)
                    CreateFile(0,file$)
                    WriteString(0,text$)
                    CloseFile(0)
                    text$ = ""
                    Else                
                        MessageRequester("No file!!","No file loaded")                
                    EndIf            
            EndSelect
    EndSelect
Until Event = #PB_Event_CloseWindow
Else
    MessageRequester("ERROR!","ERROR!")
EndIf
End

Verfasst: 04.03.2008 18:21
von Tompazi
ich habe mir jetzt die neue Demo Version (4.10) heruntergeladen und bin schockiert! :shock:
Wenn ich kompilieren will kommt das:
"Der Compiler wurde noch nicht geladen... Bitte versuchen Sie es erneut."

Ich weiß nicht was ich machen soll :cry:

@walker so will ichs auch nicht weil da ist ja ein System dahinter dass man einfacher durchschauen kann ich wills verwirrend haben. /:->
Und außerdem schauts mit den vielen Sonderzeichen cool aus. :) :lol:


Tompazi

Verfasst: 04.03.2008 21:45
von HeX0R
Tompazi hat geschrieben: Ich weiß nicht was ich machen soll :cry:
Eine Möglichkeit wäre gewesen die Suchfunktion zu benutzen...