Ascii über Console und im Windowfenster

Für allgemeine Fragen zur Programmierung mit PureBasic.
roboehler
Beiträge: 12
Registriert: 03.01.2005 22:32
Wohnort: 78713 Schramberg

Ascii über Console und im Windowfenster

Beitrag 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
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag 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

Zuletzt geändert von bluejoke am 12.01.2005 19:08, insgesamt 3-mal geändert.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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*
Zuletzt geändert von Kaeru Gaman am 12.01.2005 19:03, insgesamt 2-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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 :(
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

ich hab grad den Fehler rausgemacht, hab mal b$ statt input$ geschrieben...

input$ geht übrigens; input.s vielleicht nicht...
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

bluejoke hat geschrieben:input$ geht übrigens..
strange... dürfte nicht funktionieren, da es ein befehl ist...
lieber die finger davon lassen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag 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.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag 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.
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Antworten