Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Leader4
Anmeldungsdatum: 20.01.2005 Beiträge: 99 Wohnort: Leipzig
|
Verfasst am: 28.03.2005, 19:58 Titel: Input-Eingabe verkürzen |
|
|
Tagchen.
Kann man eine Input-Eingabe, die bekanntlich 255 Zeichen aufnehmen kann, auf weniger Zeichen begrenzen? Ich möchte bei einer Datenbank eine Input-Eingabe in einem vorgegebenem Feld organisieren und möchte, dass der Benutzer nicht mehr als 26 Zeichen eingibt, weil sonst der Text über den Rest des Bildschirms weiterläuft.
Der Umweg über das Einlesen von Strings via Inkey- bzw. Chr$-Befehl wäre mir bei diesen vielen Eingabefeldern zu umständlich.  |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 28.03.2005, 20:10 Titel: |
|
|
Hallo
Für sowas ist INPUT immer schlecht, weil das eigentliche Programm erst wieder weiterläft, wenn du die Eingabe mit ENTER beendest. Du könntest den Text höchstens nach der Eingabe abschneiden wenn er zu lang ist.
Gruss
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 28.03.2005, 20:31 Titel: |
|
|
Codeauszug aus einem von meinen Progs:
(SFont ist eine Andere SUB, ein PRINT-Ersatz für Grafikmodi)
du müsstest die SFONT-Anweisung dabei durch PRINT, LOCATE und COLOR ersetzen.
Interessant wäre für dich eigentlich erst der Teil nach ab dem DO.
....
Code: |
sub IFont (Text AS String, x as integer, y as integer, fore as integer, back as integer, Ans as string, maxlen as integer)
'Prompt ausgeben
'Show Prompt
SFont Text, x, y, fore, back
'Verschiebe Cursor ans Ende des Promps + die Breite eines Leerzeichens
'Move Cursor to the end of the prompt + the width of a Space
For i = 1 To Len(Text)
x = x + Adrs(Asc(Mid$(Text, i, 1)),2)
next
x = x + Adrs(32, 2)
do
k$ = inkey$
select case k$
case chr$(0) 'Wegen CASE ELSE aufgeführt; erzeugen kein Ereignis
case chr$(13) 'They have to be here because of CASE ELSE; the don't cause an event.
case chr$(8)
if len(Ans) then
Ans = left$(Ans, Len(Ans) - 1)
else
beep
end if
case else
if len(Ans) < maxlen then Ans = Ans + k$
end select
SFont Ans, x, y, fore, back
loop until k$=chr$(13)
end sub
|
_________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
|
Nach oben |
|
 |
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 28.03.2005, 22:12 Titel: Re: Input-Eingabe verkürzen |
|
|
Leader4 hat Folgendes geschrieben: | Der Umweg über das Einlesen von Strings via Inkey- bzw. Chr$-Befehl wäre mir bei diesen vielen Eingabefeldern zu umständlich.  |
Für so was sind doch Funktionen wie geschaffen. etwa so:
DECLARE FUNCTION Eingabe$ (Eingabelaenge AS INTEGER)
Text$ = Eingabe$(26)
Die Funktion muß man nur einmal schreiben und kann sie dann immer wieder hernehmen wenn man so etwas braucht. |
|
Nach oben |
|
 |
|