Return gibt string nicht richtig zurück.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

SamFisher

Betreff: Return gibt string nicht richtig zurück.

BeitragMi, Okt 20, 2010 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Problem ist wenn ich eine String über eine Funktion zurückgebe, wird nur ein Teil zurückgegeben.

Beispiel:

String in der Funktion "abcdEFGH"
nach return "abcd"
es werden also die Großbuchstaben einfach abgeschnitten?
Wer kann mir helfen?

Das ist die Function:
BlitzBasic: [AUSKLAPPEN]
Function Keyboard$(Te$="Eingabe:",PosX=300,PosY=100,Shift=0,KeyboardInput$="")
DelButton
Local tasten$,a,tastensave$,tastenformat$,x,y,tastenk$,tasteng$

tastenk$="1/2/3/4/5/6/7/8/9/0/#q/w/e/r/t/z/u/i/o/p/ü/Del/#a/s/d/f/g/h/j/k/l/ö/ä/Enter/#y/x/c/v/b/n/m/,/./-/Shift/Leer/"
tasteng$="1/2/3/4/5/6/7/8/9/0/#Q/W/E/R/T/Z/U/I/O/P/Ü/Del/#A/S/D/F/G/H/J/K/L/Ö/Ä/Enter/#Y/x/C/V/B/N/M/;/:/-/Shift/Leer/"
If Shift=0 Then tasten$=tastenk
If Shift=1 Then tasten$=tasteng

For a=1 To Len (tasten$)
tastenformat=Mid$(tasten,a,1)

If tastenformat<>"/" And tastenformat<>"#" Then
tastensave=tastensave+tastenformat
Else
If tastenformat="/" Then
ButtonCreate(tastensave,PosX+x,PosY+y,"","TastenKey",50,50)
x=x+52
tastensave=""
EndIf
If tastenformat="#" Then y=y+52:x=0
EndIf
Next
Repeat
Cls
Text PosX,PosY-60,Te$
Text PosX,PosY-30,KeyboardInput$+"_"
Update
WaitTimer MyTimer
Flip 0
If ButtonTyp="TastenKey" Then
If ButtonReturn<>"Shift" And ButtonReturn<>"Del" And ButtonReturn<>"Leer" And ButtonReturn<>"Enter" Then
KeyboardInput=KeyboardInput+ButtonReturn
EndIf
EndIf
If ButtonReturn="Del" And KeyboardInput<>"" Then
KeyboardInput=Left$(KeyboardInput,Len(KeyboardInput)-1)
EndIf
If ButtonReturn="Shift" Then
Shift=1-Shift
Keyboard(Te$,PosX,PosY,Shift,KeyboardInput$)
EndIf
If ButtonReturn="Leer" Then
KeyboardInput=KeyboardInput+Chr(32)
EndIf
If ButtonReturn="Enter" Then
DebugLog KeyboardInput
Return KeyboardInput
EndIf


Forever
End Function

SamFisher

BeitragDo, Okt 21, 2010 0:32
Antworten mit Zitat
Benutzer-Profile anzeigen
hat sich erledigt. Gab irgendwie problem beim neustarten der Funktion nach Shift. Dachte der übernimmt die werte. hab das jetzt mit goto gelöst.

kann geschlossen werden.

BladeRunner

Moderator

BeitragDo, Okt 21, 2010 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine Funktion erscheint mir unnötig kompliziert?
Warum mit goto rumspringen? Warum bei Shift neu aufrufen? Ich vermute mal du willst ein alternatives Input basteln, das geht wesentlich simper. Die Forensuche sollte Dir da einiges helfendes ausgeben.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Toasty

BeitragDo, Okt 21, 2010 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich benutze die Alternative zu Input, und da muss man noch nicht mal extra hinzufügen, dass er Shift erkennen soll...

Beispiel:
BlitzBasic: [AUSKLAPPEN]
Repeat
Text 10,50,current_text$+"|"

key=GetKey() ;Überprüfen ob eine Taste gedrückt wurde
If key<>0 Then
current_text$+Chr(key) ;Buchstaben zu Text-Variable hinzufügen
EndIf

If KeyHit(28) Then Exit ;Wenn Enter gedrückt, verlasse die Schleife

If KeyHit(14) Then ;Wenn Löschen gedrückt wurde
lengh=Len(current_text$)
current_text$=Left(current_text$,lengh-2) ;Den Linken Teil der Text-Variable bekommen
EndIf
Forever


Ich würde es so in etwa machen.

Gruß Toasty
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

SamFisher

BeitragSa, Okt 23, 2010 23:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem war des es nicht mit der Tastatur gehen sollte mit dem Shift, sondern es eine Bildschirmtastatur für Touchscreen sein sollte. Deswegen klappt es ja nit mit Getkey().

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group