Probleme mit Eingaberoutine
Übersicht

![]() |
HubsiBetreff: Probleme mit Eingaberoutine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Grüße beisammen.
Ich habe mit unten stehendem Code ein kleines Problem. Ich suche eine Lösung dafür Text in einer Eingaberoutine mit der Maus zu markieren (wie man es eben von Windows kennt). Konkretes Problem ist jetzt das ich das erste Zeichen im String nicht markieren kann. Ich eier da jetzt schon eine ganze Weile rum und weiß nicht mehr ob es schon Betriebsblindheit ist oder der Fehler wirklich so versteckt ist. Zum antesten und zwecks der Übersicht ist die Funktion in einem kleinen hingeklatschten Versuchsprogramm untergebracht. Der Code drumherum soll also nicht Gegenstand der Diskussion sein ![]() BlitzBasic: [AUSKLAPPEN] Graphics 640,480,32,1 |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn bis jetzt noch keiner geantwortet hat, könnte das an Deinem Spaghetti-Code liegen. Da wird es ehrlich hart, sich hier durchzuarbeiten.
Köntest Du nicht die für die "Markierung" relevanten Teile in eine eigene Funktion ausgliedern? (Da ist auch noch mittendrin in dem "Markierungs"-Teil eine "If Input_key>=32") Wenn Du das "Markieren" ausgegliedert hast, kannst Du es mit beliebigen Strings testen oder dies wieder hier einstellen |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
noch als Tipp:
schau dir mal die ScanCodes für die Buchstaben an. Und Benutze Chr$ (chr ![]() Grüße TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab den Fehler gefunden:
Deine unlesbare Zeile... BlitzBasic: [AUSKLAPPEN] If StringWidth(Left$(t$,i))+x>=MouseX() Input_mark_x=i:Exit hab ich mal in diese umgewandelt... BlitzBasic: [AUSKLAPPEN] If StringWidth(Left$(t$,i))+x>=MouseX() Then und jetzt sieht man auch den Fehler. Es muss heißen: BlitzBasic: [AUSKLAPPEN] Input_mark_x=i-1
Da Du ja erst dann abbrichst, wenn der String zu lang wurde, muss i wieder um 1 reduziert werden, da ja sonst erst NACH dem (i)-ten Zeichen der DrawRect anfängt, aber Du willst ja, dass er schon vor diesem, also nach dem (i-1)-ten Zeichen beginnt Mann, mach mal dieser "3 Befehle auf einer Zeile"-Ungetüme raus! Ich habe mal den Marker-Teil in eine Funktion gepackt (ohne viel von Deinem Code zu ändern) Den Cursor-Zeichner und die Input>32 habe ich rausgenommen. Die bleiben im Hauptprogramm BlitzBasic: [AUSKLAPPEN] Function TextMarkieren(t$) |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke erstmal für die Antworten Ihr beiden. Ich war gestern Abend aus, von daher die realtiv späte Reaktion ![]() TimBo, ich glaube ich verstehe nicht was Du mir damit sagen willst: TimBo hat Folgendes geschrieben: noch als Tipp:
schau dir mal die ScanCodes für die Buchstaben an. Midimaster, Dir besonderen Dank. Deine gepostete Version funktioniert zwar so nicht, aber "Augen öffnend" war es und das haut mich am meisten nach vorn ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group