ungepufferte texteingabe (selbserstellter editor) PROBLEM
-
hi also ich erstell in der schule ein projekt wo man durch eine ungepufferte texteingabe seinen text wieder verbessern kann.(die zeicheneingabe soll zeichenweise erfolgen;))
Der Editor sollte könen: zeichenweise eingabe von zeichen(das ganze im vektor abspeichern oder so in der art;) ), rechtslinks bewegen mit den pfeiltasten,Backspace taste,EINFG,INSERT,ENDE POS1, sollte durch enter taste beendet werden (is ja kein prob:P)nun waren meine vorüberlegung das ich das ganze mit EINF,insert undso mit einer
switch anweisung machen könnte, ich hab probiert und probiert bin einfach nicht darauf gekommen, ich denke mal das die noch zu komplex für mich ist xD
zu den pfeiltasten ist mir nix eingefallen.^^leider hab ich den quellcode jetz nicht vor mir liegen sondern in der schule
ich hoffe ihr könnt alles nachvollziehen^^
und zwar ist das problem:
->die ungepuffterte zeichenweise eingabe hab ich soweit fertig müsste auch klappen
ich hab sie per c=getch(); in einer while schleife gemacht und mit putch(c);
ausgeben lassen.
->also kann ich z.b hallo eingeben, jetz versuch ich durch die backspace taste
den text zu löschen und er zeigt mir ne 8 an dann hab ich verscuht::D
if(c==8){
getxy(i,0); // i ist der zähler im vektor t[i]
//getxy(vertikal,horizontal)
i--;
printf("%c",32); // geht das ?^^ soll die leertaste sein (32)
}
->folgende noch zu klärende probleme sind aufgetreten;)
wie schaff ich es die Einfg,Entf,POS 1,ENDE taste einzubauen ?
wie schaff ich es mit den pfeiltasten mich zu bewegen ?ich hab mir ma den code für die pfeiltasten ausgeben lassen und es war iwie
" à224MK " wie schaff ich es mich durch so ein code zu bewegen in der
zeicheneingabe
-
die zeicheneingabe soll zeichenweise erfolgen
Leider bietet der Standard dafür keine Möglichkeiten an. Funktionen wie getch() sind aber weit verbreitet. Welches Betriebsystem soll darunter laufen?
wie schaff ich es die Einfg,Entf,POS 1,ENDE taste einzubauen ?
wie schaff ich es mit den pfeiltasten mich zu bewegen ?Du könntest z.B. hier zu lesen beginnen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39320.html
-
Welches Betriebsystem soll darunter laufen?
Und: welchen Compiler verwendest du?
-
ich nutze visual basic 2008 und programm damit wie der compiler heist weis ich nich aufjedenfall benutz ich ein c compiler ^^
-
thacoga schrieb:
ich nutze visual basic 2008 und programm damit wie der compiler heist weis ich nich aufjedenfall benutz ich ein c compiler ^^
visual basic kann schon mal nicht sein. bestimmt haste den msvc, der kennt auch '_kbhit()', ich schatze mal das wirste brauchen.
-
hallo leutz,
ich habe mal ein program dazu geschrieben soweit bin ich gekommen:#include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #include "conscreen.h" #pragma warning (disable:4996) void text_eingabe(char t[], int len); void text(char t[], int len); void main (void) { char vec[10]; text(vec,9); } void text(char t[], int len) { int i = 0; char c; int x,y; GetXY(&x,&y); do { c=getch(); if(c!=13 && c!=8 && c != 'q') { t[i]=c; putch(c); ++i; ++x; } else if(c==8) { SetXY(x-1,y); putch(' '); putch('\b'); --i;--x; } else if(c==13) { putch('\n'); break; } else if('q'){ printf("\n\n%s",t); } }while(t[i]); }
ich hab es bis jetz geschaft das backspace zu programmieren also kann ich jetz text eingeben und ihn wieder löschen :D, das problem ist iwie das wenn ich eine zeichenfolge eingebe lösche dies 5-10mal wiederhole dann spinnt mein vektor
irgendwie und löscht nicht das letze zeichen(besser gesagt überschreibt es nicht mit einer leertaste) sondern das vorletze ich bin da total durcheinander brauche umbedingt hilfe..
-> Wenn ihr q drückt lässt ihr euch den vektor ausgeben,leider funktioniert
dies noch nicht ganzoder dies ist wirklich mein vektor und er ist mit so
komischen zeichen gefüllt.
Mein weiteres Problem wären halt die pfeiltasten wenn ich sie drücke bekome ich halt den code dafür ausgegeben aber nix bewegt sich oder die EINFG, POS1 und ENDE taste bekomme ich auch einen codefalls ihr die "Conscreen.h und ..c" haben wollt kann ich euch sie gern per email schicken dort sind funktionen von meinem lehrer womit ich mit mich mit zeigern bewegen kann also das SetXY u. GetXY , desweiteren habe ich noch eine kleine konsolenanwendung die das problem sehr gut darstellt.
EMAIL: St0ne308@msn.com
danke
-
Du bist leider in der falschen Ecke gelandet:
$ find / -name conio.h $
Deshalb kann ich deinen Code nicht testen, ohne Geld dafür auszugeben, oder mich strafbar zu machen. Also nichts wie weg.
Aber drüberschauen kann ich:if(c!=13 && c!=8 && c != 'q')
Wenn du das als drittes if geschrieben hättest, könntest du die Tests auf 13 und 8 unterlassen. Stilistisch ist es schlecht, solche Zahlen mehrfach zu schreiben, besser man macht eine Konstante dafür.
Mein weiteres Problem wären halt die pfeiltasten wenn ich sie drücke bekome ich halt den code dafür ausgegeben aber nix bewegt sich oder die EINFG, POS1 und ENDE taste bekomme ich auch einen code
Das hast du aber auch erbeten. Den Cursor musst du dann schon selbst setzen.
falls ihr die "Conscreen.h und ..c" haben wollt kann ich euch sie gern per email schicken
Ich wette darauf, dass das keiner machen wird. Verwende für solche Fälle besser einen Pasting-Dienst, wie zB http://codepaste.net/
}while(t[i]);
Soll das solange laufen, bis ich ein Nullbyte eingebe? Und wenn ja: wie gibt man ein Nullbyte ein?