Seite 1 von 2

Ascii über Console und im Windowfenster

Verfasst: 12.01.2005 18:22
von roboehler
Wenn ich diese Consolenanwendung ausführe, bekomme ich zu einer eingegebenen Zahl das richtige, zugehörige Ascii-Zeichen zurück.

Code: Alles auswählen

;Beispiel:
OpenConsole()
f=Val(Input())
PrintN(" ")
Print(Str(f))
b$=Chr(f)
Print(" ")
PrintN(b$)
PrintN("Ascii "+Str(f)+" = Buchstabe "+(b$))
Input()
closeConsole()  

Sobald ich aber versuche dies im Windowsfenster auszuführen per Inputrequester, erhalte ich nicht das gewünschte Ergebnis. Meist kommt dann die Fehlermeldung, dass sich ein numerischer Wert nicht mit einem
String verträgt. 
Hier ist mein Code in Windows. Wo liegt der Fehler?

;Code:
;Beispiel: zahl$
OpenWindow(0, 50, 200, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar, "Window")  

InputRequester("Ascii-Wert u. Buchstabe","Bitte geben sie eine Zahl ein:",b$)
     If Input$ <> "" 
       ;Ascii = Asc(String$) 
      ;ASCII = Asc("!") ; 'ASCII' erhält den Wert '33'
      
             ; Text$ = Chr(ASCII-Wert) 
       ;x$ = Chr(33);x$ enthält das Zeichen "!" 
   
   ;    Ergebnis$ = StrU(Wert, Typ) 
    ;   Konvertiert eine vorzeichenlose Zahl in einen String. 

   ;Die folgenden 'Typen' sind möglich: 
   ; #Byte: Der Wert ist eine Byte-Zahl, im Bereich von 0 bis 255 
  
     b$=input$  
     ;ASCII= Asc("input$")
     ;b$= ValF(b$)) 
      ;b$=StrF(ValF(b$))
     b$= Str(Val(b$)) 
     ;b$= StrU(b$,#Byte)

     ;b$=Str(b)
     ;c=Asc("b")
     ;b$=Chr(input$)
     
     a$="Sie haben folgendes in den Requester geschrieben:" + Chr(10) 
     ;ASCII= Asc("b$")
 
    ;x$ + Input$ +"Ascii "+Str(i)+" = Buchstabe "+(b$)
    a$+"  Buchstabe "+b$+" = AsciiWert "+Input$
    ;+ " Ascii "+Str(zahl$)+" = Buchstabe "+(Input$)                                                   
    ;a$+" Ascii "+Str(f)+" = Buchstabe "+(Input$);Else  
   ; x$ = "Der Requester wurde abgebrochen oder es wurde nichts eingegeben." 
    ;zahl$
  EndIf 
  MessageRequester("Information",a$,0) 
    End 
    Debug Input$
Debug b$
Debug a$
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
Nachdem ich nun schon 2 Stunden lang nach dem Fehler gesucht habe, und auch in der Hilfe geschaut habe :oops: gebe ich auf....
Bin für jede Hilfe dankbar.... MfG roboehler

Edit by NicTheQuick: Code-Tags gesetzt

Verfasst: 12.01.2005 18:30
von bluejoke
hab mir jetzt deinen Code nicht angeschaut, aber kuck dir mal mein Bsp. an; vielleicht hilfts ja:

Code: Alles auswählen

zahl.l = Val(InputRequester("Test", "Zahl eingeben", ""))
Debug zahl.l
Debug Chr(zahl.l)


EDIT:
Hab mir jetzt doch deinen Code angeschaut. Jetzt mal dein Code hier korrekt:

Code: Alles auswählen

OpenWindow(0, 50, 200, 600, 300, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar, "Window")
; für was das Fenster?

input$ = InputRequester("Ascii-Wert u. Buchstabe","Bitte geben sie eine Zahl ein:",b$)
; 1. InputRequester muss das doch irgendwohin speichern, schau dir mal die Syntax von dem Befehl an
; natürlich kannst du b$ als letzten Parameter nehmen, aber da b$="" nimm doch lieber gleich "" - dann weißt du auch was das ist

If input$ <> ""
  ; b$=Input$
  ; wofür das?
  ; b$= Str(Val(input$))
  ; bewirkt überhaupt nichts, da Str(Val(b$)) = b$
  ; statt Str(a.l), dass aus 4 einfach "4" macht brauchst du Chr(a.l)
  
  b$ = Chr(Val(b$))

  a$="Sie haben folgendes in den Requester geschrieben:" + Chr(10)
  a$+" Buchstabe "+b$+" = AsciiWert "+Input$
  MessageRequester("Ausgabe", a$)
  ; in die If-Klammer geschrieben, da sonst ein leere msg-req. kommt
EndIf


Verfasst: 12.01.2005 18:42
von Kaeru Gaman
@roboehler

bitte setze mal code-tags in deinem post, so kann ich das nicht lesen.
(...will ich das nicht lesen... :? )
(einfach jeweils den code-bereich markieren, und auf den code-button klicken.)
danke.


edit:
habs mir trotzdem mal angesehen (konnt's nich lassen :mrgreen: )

also
1)
Input$ ist ein reservierter befehl.
du verwendest ihn in zweiten beispiel als variable, das geht nicht.
ersetzte alle Input$ durch z.b. In$

2)
die syntax des InputRequesters ist fehlerhaft:
a) die eingabe ist der Rückgabewert der Funktion,
b) das dritte argument ist ein default-wert

Code: Alles auswählen

In$=InputRequester("Ascii-Wert u. Buchstabe","Bitte geben sie eine Zahl ein:","") 
funktioniert...

fazit:
*fazit gelöscht, weil müll*

Verfasst: 12.01.2005 18:55
von bobobo
Die Funktion inputrequester() hat einen Rückgabewert den Du benutzen solltest.

Code: Alles auswählen

b$=InputRequester("Ascii-Wert u. Buchstabe","Bitte geben sie eine Zahl ein:","")
If b$
    wert=Val(b$)
    asc_wert$=Chr(wert)
    MessageRequester("ASCII:",Str(wert)+" Buchstabe"+asc_wert$,0)
EndIf
End
verd.. zu lahm :(

Verfasst: 12.01.2005 19:07
von Kaeru Gaman
bobobo hat geschrieben:verd.. zu lahm :(
aber dafür richtig.. meins war müllig, und in BJ's is auch nochn fehler drin...

Verfasst: 12.01.2005 19:09
von bluejoke
ich hab grad den Fehler rausgemacht, hab mal b$ statt input$ geschrieben...

input$ geht übrigens; input.s vielleicht nicht...

Verfasst: 12.01.2005 19:46
von Kaeru Gaman
bluejoke hat geschrieben:input$ geht übrigens..
strange... dürfte nicht funktionieren, da es ein befehl ist...
lieber die finger davon lassen...

Verfasst: 13.01.2005 18:42
von bluejoke
input$ ist ja nicht einmal das selbe wie input.s - und gehen tut beides, zumindest bei mir :D ... Ist aber IMHO wirklich schlechter Programmierstil, aber darum gings in dem Thread ja nicht.

Verfasst: 16.01.2005 16:37
von Kaeru Gaman
ich hab mich vertan: Input$ wird in der PB-Hilfe als korrekter Variablenname verwendet.

anscheinend wird das "$" zeichen am ende der variablennahmens nicht wirklich
als andere schreibweise von name.s interpretiert.

korrekterweise müsste name$ das gleiche sein wie name.s und ebenso interpretiert werden.

Verfasst: 16.01.2005 16:42
von Andre
Kaeru Gaman hat geschrieben:anscheinend wird das "$" zeichen am ende der variablennahmens nicht wirklich als andere schreibweise von name.s interpretiert.

korrekterweise müsste name$ das gleiche sein wie name.s und ebenso interpretiert werden.
Die Variablen "name$" und "name.s" (bei der ersten Deklaration, später reicht auch "name") werden von PB als jeweils eigenständige String-Variablen behandelt.