ASCII Zeichen werden nicht erkannt

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag 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 ;)
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag von Tompazi »

der Code ist unverändert so wie er da steht :?

signed Byte??
Was ist das? :?


Danke Tompazi
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Tompazi hat geschrieben:vielleicht weil ich noch immer die Demo Version habe?
welche Version denn?

Grüße ... Kiffi
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag 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
Tompazi
Beiträge: 211
Registriert: 22.09.2007 15:38

Beitrag 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
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Tompazi hat geschrieben: Ich weiß nicht was ich machen soll :cry:
Eine Möglichkeit wäre gewesen die Suchfunktion zu benutzen...
Antworten