Zeichen ersetzen (gelöst)
Übersicht

![]() |
SereyanneBetreff: Zeichen ersetzen (gelöst) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo allerseits,
ich benutze die Funktion TextFieldReplace, hier noch mal der Code: Code: [AUSKLAPPEN] ;Einleitung
;Rückgabe = TexfieldReplace(textfield_id[,modus][,auswahltext]) ;Programmiert von Jonas Cleve ;Parameter: ;tf_id : Handle des mit "CreateTextField" erstellten Textfields ;mode : Modus der Funktion, welche sind: ;0 : [Standard] Es sind nur Zahlen erlaubt (0-9) ;1 : Es sind nur Buchstaben erlaubt (A-Z,a-z) (ACHTUNG: KEINE LEERZEICHEN!!!) ;2 : Es sind nur Buchstaben und Zahlen erlaubt (0-9,A-Z,a-z) (KEINE LEERZEICHEN!!!) ;3 : "Dateinamen"-Eingabemodus; Es sind die Zeichen nicht erlaubt, ;die von Windows aus nicht im Dateinamen vorkommen dürfen ;4 : Bei diesem Modus muss man beim dritten Parameter alle Zeichen übergeben, ;die nicht vorkommen dürfen ;Bsp: 'TextfieldReplace(textfield,4,"ABCDEFabcdef")' ;(Bei diesem Beispiel würden diese Buchstaben entfernt) ;5 : Wie 4 nur übergibt man alles was vorkommen darf ;Rückgabe: Wenn erfolgreich dann wird 1 ansonsten 0 zurückgegeben ;Ende der Einleitung Function TextFieldReplace(tf_id,mode=0,a_txt$="") If (mode < 0) Or (mode > 5) Then Return 0 Local change = 0 Local ascii = 0 Local ftext$ = TextFieldText$(tf_id) Local i Local j Local ftextmid$ Local repl$ Local in Select mode Case 0 For ascii = 0 To 44 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next For ascii = 46 To 47 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next For ascii = 58 To 255 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next If Len(ftext$) > 1 Then ftext2$ = Right(ftext$,Len(ftext$)-1) If Instr(ftext2$,"-") Then ftext2$ = Replace(ftext2$,"-","") ftext$ = Left(ftext$,1)+ftext2$ change = 1 EndIf EndIf Case 1 For ascii = 0 To 64 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next For ascii = 91 To 96 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next For ascii = 123 To 255 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next Case 2 For ascii = 0 To 47 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next For ascii = 58 To 64 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next For ascii = 91 To 96 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next For ascii = 123 To 255 If Instr(ftext$,Chr$(ascii)) Then change = 1 ftext$ = Replace$(ftext$,Chr$(ascii),"") EndIf Next If Instr(ftext$,"-") And Left(ftext$,1) <> "-" Then ftext$ = Replace(ftext$,"-","") change = 1 EndIf Case 3 If Instr(ftext$,"\") Then ftext$ = Replace$(ftext$,"\","") change = 1 EndIf If Instr(ftext$,"/") Then ftext$ = Replace$(ftext$,"/","") change = 1 EndIf If Instr(ftext$,":") Then ftext$ = Replace$(ftext$,":","") change = 1 EndIf If Instr(ftext$,"*") Then ftext$ = Replace$(ftext$,"*","") change = 1 EndIf If Instr(ftext$,"?") Then ftext$ = Replace$(ftext$,"?","") change = 1 EndIf If Instr(ftext$,Chr(34)) Then ftext$ = Replace$(ftext$,Chr(34),"") change = 1 EndIf If Instr(ftext$,"<") Then ftext$ = Replace$(ftext$,"<","") change = 1 EndIf If Instr(ftext$,">") Then ftext$ = Replace$(ftext$,">","") change = 1 EndIf If Instr(ftext$,"|") Then ftext$ = Replace$(ftext$,"|","") change = 1 EndIf Case 4 For i = 1 To Len(a_txt$) repl$ = Mid$(a_txt$,i,1) If Instr(ftext$,repl$) Then ftext$ = Replace(ftext$,repl$,"") change = 1 EndIf Next Case 5 For i = 1 To Len(ftext$) ftextmid$ = Mid$(ftext$,i,1) in = 0 For j = 1 To Len(a_txt$) repl$ = Mid(a_txt$,j,1) If ftextmid$ = repl$ Then in = 1 Next If in = 0 Then ftext$ = Replace(ftext$,ftextmid$,"") change = 1 EndIf Next End Select If change Then SetGadgetText(tf_id,ftext$) Return 1 End Function Ich arbeite momentan mit dem Modus 5 und übergebe alles, was stehen bleiben darf. Mein Proggi soll eine Art Taschenrechner werden, deswegen habe ich alle Zahlen und das Komma übergeben. Es funktioniert auch alles. Problem bei BB ist halt nur, dass das Programm anstatt Kommas für Nachkommastellen einen Punkt nutzt. Wenn ich meine Zahlen zum Rechnen mit Punkt eingebe (und natürlich den Punkt auch als erlaubtes Zeichen im Modus 5 übergebe), ist ja auch alles prima. Ich möchte aber gern unbedingt das Komma verwenden. Wie kann ich dem Programm erklären, dass jedes eingegebene Komma zum Berechnen in einen Punkt verwandelt werden soll? Oder gibt es eine leichtere Lösung? Versteht ihr meine Frage? Danke im Voraus LG Sereyanne |
||
- Zuletzt bearbeitet von Sereyanne am Fr, Mai 11, 2012 19:11, insgesamt 2-mal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum benutzt du nicht Replace![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das frag ich mich jetzt auch..... ![]() Danke für deine Hilfe! Jaja, wenn man nicht mit der Nase drauf gestoßen wird, sieht man's nicht. Ich glaub ich geh lieber schlafen, ist wohl doch schon zu spät für mich. ![]() Danke und noch eine schöne Nacht! ------------------- Guten Morgen. Ich hab noch mal drüber nachgedacht und das ausprobiert. Irgendwie klappt es immer noch nicht so recht. Replace ist zwar der Befehl, den ich gesucht hab. Aber es funktioniert nicht. Ich habe ja ein TextField. Mittels TextFieldReplace übergebe ich alle Zeichen, die vorkommen dürfen (Zahlen und Komma). Von der Logik her müsste ich jetzt einfach Replace nehmen und die eingegebenen Kommata in Punkte verwandeln. In der Praxis geht das aber nicht, weil mir der Debugger lange Zahlenfolgen à la "42745200" ausspuckt. Ist ja klar, dass er da nix umwandeln kann, kommt ja kein Komma drin vor. Auszug: Code: [AUSKLAPPEN] If EventSource()=betragwert1 Then
textfieldreplace(betragwert1,5,"0123456789,") ;beim dritten Parameter übergibt man alles was vorkommen darf neu$=Replace$(betragwert1 ,",",".") betragswert1=neu$ EndIf "betragwert1" ist der Name des TextFields. Das ist jetzt auch nur ein Codeauszug von den vielen Versuchen, die ich schon durch probiert habe. Ich hab auch schon versucht, alles in Strings zu wandeln, aber mit demselben Ergebnis. Eigentlich müsste doch das TextField schon ein String sein, oder? Von daher müsste ich das doch gar nicht brauchen. Was mach ich falsch? |
||
![]() |
The Shark |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau dir den Befelh an: TextFieldText![]() |
||
![]() |
KnorxThieus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Variable des Textfelds verrät nichts über den Inhalt dessen.
Du musst folgendes machen: BlitzBasic: [AUSKLAPPEN] SetGadgetText betragswert1, Replace(TextFieldText$(betragswert1), ",", ".") Probier's mal! |
||
Version: BlitzPlus / Blitz+ |
![]() |
Sereyanne |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke euch beiden.
Da sieht man mal wieder den Wald vor lauter Bäumen nicht. Ich arbeite schon ständig mit TextFieldText, aber dass ich hier an der Stelle den Wert natürlich erst mal auslesen muss, bevor ich ihn verarbeiten kann, dafür musste erst jemand mit dem Vorschlaghammer kommen. Und genauso verhält es sich auch mit SetGadgetText - natürlich kann ich nix anzeigen lassen, was ich nie übergeben habe. Oh man..... Danke schön! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group