Input - Routine (die Xte)
Übersicht

![]() |
D2006AdministratorBetreff: Input - Routine (die Xte) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Leute,
ich fand für mein Spiel keine brauchbare. Kurzerhand schrieb ich selbst eine. Code: [AUSKLAPPEN] ; Input-Routine © 2005, ChaosInteractive, written by Daniel 'D2006' Liebetrau.
; This Code is declared as PD ; Besonderheiten: ; Text kann markiert werden ; Alle Copy/Paste/Cut Tastenkürzel funktionieren Graphics 640,480,32,2 SetBuffer BackBuffer() ;Globals für die Funktion Global INP_C%,INP_L%,INP_M%=-1,INP_DONE Repeat Cls Text 10,10,"Bitte geben Sie irgendetwas ein:" inp$=Input(10,50,inp$,30) Flip Until INP_DONE FlushKeys() Cls Text 320,240,Chr$(34)+inp$+Chr$(34),1,1 Flip WaitKey() End Function Input$(x,y,dat$,max=65536) Local a,d,c$,SHIFT = GetKeyState(16), STRG = GetKeyState(17) Local EINFG = GetKeyState(45), ENTF = GetKeyState(46), ENTER = GetKeyState(13) Local r=ColorRed(),g=ColorGreen(),b=ColorBlue() Local m,l INP_DONE=0 Text x,y,dat$ ;blinkender Cursor If MilliSecs() Mod 800 < 400 Then Rect x+StringWidth(Left$(dat$,INP_C%)),y,1,FontHeight() ;Markierter Text: If INP_M%>-1 Then m=INP_M% l=INP_L% If l<0 Then m = m-Abs(l) : l=Abs(l) Color r,g,b Rect x+StringWidth(Left$(dat$,m-1)),y,StringWidth(Mid$(dat$,m,l)),FontHeight() Color 255-r,255-g,255-b Text x+StringWidth(Left$(dat$,m-1)),y,Mid$(dat$,m,l) Color r,g,b EndIf a = GetKey() ;Eingabe: If a>31 And a<256 Then If INP_M%>-1 Then dat$= Left$(dat$,m-1)+Mid$(dat$,m+l) INP_C%=m-1 INP_M%=-1 INP_L%=0 EndIf If Len(dat$)=max Then d=1 dat$ = Left$(dat$,INP_C%) + Chr$(a)+ Mid$(dat$,INP_C%+1+d) INP_C%=INP_C%+1 If Len(dat$)>max Then dat$=Left$(dat$,max):INP_C%=max EndIf ;Löschen / Backspace: If a=8 And Len(dat$)>0 Then If INP_M%>-1 Then dat$= Left$(dat$,m-1)+Mid$(dat$,m+l) INP_C%=m-1 INP_M%=-1 INP_L%=0 ElseIf INP_C%>0 dat$ = Left$(dat$,INP_C%-1)+Mid$(dat$,INP_C%+1) If INP_C%>0 Then INP_C%=INP_C%-1 EndIf EndIf ;Entfernen: If ENTF=-32767 And SHIFT=0 And Len(dat$)>0 Then If INP_M%>-1 Then dat$= Left$(dat$,m-1)+Mid$(dat$,m+l) INP_C%=m-1 INP_M%=-1 INP_L%=0 ElseIf INP_C%<Len(dat$) dat$ = Left$(dat$,INP_C%)+Mid$(dat$,INP_C%+2) EndIf EndIf ;Einfügen: If (EINFG=-32767 And SHIFT<>0) Or (KeyHit(47) And STRG<>0) Then ;Einfügen If INP_M%>-1 Then dat$= Left$(dat$,m-1)+Mid$(dat$,m+l) INP_C%=m-1 INP_M%=-1 INP_L%=0 EndIf c$=INPUT_paste$() If Len(dat$)=max Then d=Len(c$) dat$ = Left$(dat$,INP_C%) + c$ + Mid$(dat$,INP_C%+1+d) INP_C% = INP_C%+Len(c$) If INP_C%>max Then INP_C%=max If Len(dat$)>max Then dat$=Left$(dat$,max) EndIf ;Kopieren: If (EINFG=-32767 And STRG<>0) Or (KeyHit(46) And STRG<>0) And INP_M%>-1 And INP_L%<>0 Then INPUT_copy(Mid$(dat$,m,l)) EndIf ;Ausschneiden: If (ENTF=-32767 And SHIFT<>0) Or (KeyHit(45) And STRG<>0) And INP_M%>-1 And INP_L%<>0 Then INPUT_copy(Mid$(dat$,m,l)) dat$= Left$(dat$,m-1)+Mid$(dat$,m+l) INP_C%=m-1 INP_M%=-1 INP_L%=0 EndIf ;POS1: If KeyHit(199) Then If SHIFT Then If INP_M%=-1 Then INP_M%=INP_C%+1 INP_L%=-INP_M%+1 Else INP_L%=0 INP_M%=-1 EndIf INP_C%=0 EndIf ;ENDE: If KeyHit(207) Then If SHIFT Then If INP_M%=-1 Then INP_M%=INP_C%+1 INP_L%=Len(dat$)-INP_M%+1 Else INP_L%=0 INP_M%=-1 EndIf INP_C%=Len(dat$) EndIf ;NACH LINKS: If GetKeyState(37)=-32767 And INP_C%>0 Then INP_C% = INP_C% - 1 If SHIFT Then If INP_M%=-1 Then INP_M%=INP_C%+2 INP_L%=INP_L%-1 Else INP_M%=-1 INP_L%=0 EndIf EndIf ;NACH RECHTS: If GetKeyState(39)=-32767 And INP_C%<Len(dat$) Then INP_C% = INP_C% + 1 If SHIFT Then If INP_M%=-1 Then INP_M%=INP_C% INP_L%=INP_L%+1 Else INP_M%=-1 INP_L%=0 EndIf EndIf If ENTER Then INP_DONE=1:INP_M%=-1:INP_L%=0:INP_C%=0 Return dat$ End Function Function INPUT_paste$() ;Funktion zum Auslesen des Clipboards. THX an OJay Local txt$="",t t = OpenClipboard(0) If t=0 Then Return "" If ExamineClipboard(1) txt$=GetClipboardData$(1) EndIf CloseClipboard Return txt$ End Function Function INPUT_copy(txt$) ; Funktion zum Beschreiben des Clipboards. THX an OJay Local cb_TEXT=1 If txt$="" Then Return OpenClipboard 0 EmptyClipboard SetClipboardData cb_TEXT,txt$ CloseClipboard End Function Feedback erwünscht. MfG D2006 EDIT: sorry, hier noch die .decls: Zitat: .lib "user32.dll"
OpenClipboard%(hwnd%):"OpenClipboard" CloseClipboard%():"CloseClipboard" ExamineClipboard%(format%):"IsClipboardFormatAvailable" EmptyClipboard%():"EmptyClipboard" GetClipboardData$(format%):"GetClipboardData" SetClipboardData%(format%,txt$):"SetClipboardData" GetKeyState%(Key%):"GetAsyncKeyState" |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
- Zuletzt bearbeitet von D2006 am Mo, Feb 14, 2005 15:36, insgesamt einmal bearbeitet
![]() |
adbaBetreff: hmm |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eigentlich eine nützliche Funktion aber ich kann si mir nicht anschauen da ich kein BlitzPlus habe..
Gebt doch bitte an für welches Blitz das der Code geschriben ist! oder man könnte den code auch nach Blitz Programm sortieren! |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
sorry, da war eine Funktion zu testzwecken noch drinne.
Hab die rausgenommen. Ist jetzt B2D und B3D kompatibel. MfG D2006 |
||
noir |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
D2006 hat Folgendes geschrieben: sorry, da war eine Funktion zu testzwecken noch drinne.
Hab die rausgenommen. Ist jetzt B2D und B3D kompatibel. MfG D2006 nein ![]() |
||
Fragt und man wird euch helfen
Das Alternativ BlitzBasic-Forum: FreeCoder Einfach chatten: BlitzChat Code&Text schnell und einfach pasten: FreePasting |
- Zuletzt bearbeitet von noir am So, März 06, 2005 12:36, insgesamt einmal bearbeitet
![]() |
MoochBetreff: ... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für die tolle(n) Function(s)!
Konnte ich grad gebrauchen! Ich hoffe man darf sie auch in seinen Spielen verwenden!?! mooch 8) |
||
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D .:: Sites ::. .:: http://www.fl4sh-clan.de/ ::. |
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() Ist eine sehr gute Funktion, kann ich sie auch verwenden?? Fliege |
||
Wer weiß was kommt.. ? |
![]() |
Wild-Storm |
![]() Antworten mit Zitat ![]() |
---|---|---|
nein. natürlich nicht. die codes stehen hier nur zum anschauen.
lol.... |
||
Visit http://www.next-dimension.org
------------------------------------------------- Freeware Modelle, Texturen & Sounds: http://www.blitzforum.de/forum...hp?t=12875 |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
im Code steht:
Code: [AUSKLAPPEN] ; This Code is declared as PD
PD heißt Public Domain, was wiederum bedeutet das ihr damit anstellen könnt was ihr wollt. Kein Credits Eintrag, einfach nichts braucht ihr zu beachten. MfG D2006 |
||
![]() |
Mooch |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für den Hinweis.
Da sieht man mal... Man lernt andauernd neues. ![]() mooch |
||
Pentium IV 3.0Ghz; nVidia Geforce 6800;
Microsoft Windows XP Home SP2; BlitzBasic 3D .:: Sites ::. .:: http://www.fl4sh-clan.de/ ::. |
Broghi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Erst mal danke für dieses Programm, kann man immer mal gebrauchen.
Aber wie kann ich jetzt die Variable "max" für die maximale Eingabe vergrößern? Hab mir den Code mal angeschaut, finds aber nicht |
||
Wozu lernen wir überhaupt programmieren?
Damit der Computer für uns Aufgaben löst (die wir ohne ihn nie gehabt hätten!). |
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sehr schön, aber es wird immer nur ein Keyhit registriert - wenn man eine
Taste länger drückt, passiert nix mehr, was gerate beim manuellen Löschen doch ärgerlich ist. Wird das noch verändert? |
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
![]() |
MichiMeister |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich bekomme die Routine nicht zum laufen.
In B+ gibt es keine user32.dll. Wo bekomme ich die her? Da ist nur eine demolib.dll und demolib.decls. |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die user32.dll ist bei Windows dabei.
Würd nach 2 jahren eh keinen mehr interessieren. :/ |
||
![]() |
MichiMeister |
![]() Antworten mit Zitat ![]() |
---|---|---|
The_Nici hat Folgendes geschrieben: Die user32.dll ist bei Windows dabei.
Würd nach 2 jahren eh keinen mehr interessieren. :/ Und die muß dann ins userlib-Verzeichnis kopiert werden? Offensichtlich interessiert es mich. ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, die Decls gehört nach userlib, die DLL darf in System oder im Anwendungsordner liegen. Da user32.dll eine Windowsdll ist reicht es also die decls einzutragen, der Rest ist schon an der passendne Stelle ![]() |
||
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 |
![]() |
MichiMeister |
![]() Antworten mit Zitat ![]() |
---|---|---|
BladeRunner hat Folgendes geschrieben: Nein, die Decls gehört nach userlib, die DLL darf in System oder im Anwendungsordner liegen. Da user32.dll eine Windowsdll ist reicht es also die decls einzutragen, der Rest ist schon an der passendne Stelle
![]() Vielen Dank. Gut zu wissen. Kann ich die Decls in eine beliebige Datei schreiben oder muß die einen speziellen Namen haben? |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab gerade kein BB zur Hand, aber darf die dll nicht auch in den userlib-ordner? | ||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Darf aber bei einer System DLL brauchts das nicht, denn die Datei ist auf jedem System schon drauf.
Du würdest nur extra datenmüll erzeugen wenn du sie kopierst Die datei muss <irgendetwas>.decls heissen und im userlibs ordner sein. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Besser gesagt, eine dll die ausgeführt wird muss sich im gleichen Ordner des Programms befinden ODER in einem absoluten Pfad der in der reg steht (mach aber keiner da kein guter Style) ODER im System32 Ordner von Windows.
Und da stehen diese Dateien ja schon. Eigene DLLs die benötigt werden in diesen Ordner zu kopieren gilt als mittelschweres Verbrechen. Sie haben da nichts zu suchen, weder Hilfsdlls noch bass/fmod noch sonst was, da gehören nur Windows dlls rein (also die originalen von Microsoft). cu |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group