Terminalfenster einbinden



  • aloa leute ...

    ich bastle grad an einer anwendung, wo ich nen bestehenden sourcecode einbinden moechte. das prob: der bestehende source is leider fuer ne terminal ausgelegt. nun waere es interessant, wenn ich den source in die windows-application einbinden koennte. die reine datenausgabe des terminal-fenster, in ein memo umzuleiten, is kein problem. aber es waeren auch noch einige dateneingaben zutaetigen. hat jemand von euch ne idee, wie ich das loesen koennte ?

    Deadman



  • Oje, ohne den Code zu kennen, wenn es eine Konsolenanwendung ist wird es wahrscheinlich am Besten sein, alles neu zu schreiben. Man kann zwar probieren, z.B. einen printf in z.B. Memo1->Lines->Add umzuschreiben, aber ob das dann alle so passen wird ist sehr fraglich. Auf jeden Fall müsstest Du den ganzen Code Schritt für Schritt durchgehen und analysieren. Aber je nach Codeumfang werden Anpassungen in den meisten Fällen nur zum absoluten Codechaos führen.

    [ Dieser Beitrag wurde am 27.12.2002 um 21:20 Uhr von Peter editiert. ]



  • aloa ...

    ich probiers mal anders

    kann man irgendwie ein- und ausgaben von daten ueber ein memofeld oder aehnliches machen ?

    ansonten macht man dateneingaben ja meist ueber ein Edit oder so.
    ich will aber beides in einem haben.

    wie ich die eingaben bzw die ausgaben in die terminal-application bekomme weiß ich ja.

    Deadman



  • Ähä 🙄 , mag ja sein, daß ich grad voll aufm Schlauch stehe, hab aber keinen blassen Dunst was Du genau meinst . Kannste vielleicht ein Beispiel bringen was Du genau mit Ein-/Ausgaben von Daten meinst 😕



  • ahoi...

    wenn man ne ganz kleine terminal-anwendung macht, wie zum bleistift ein kleines proggie, wo am bildschirm steht: "Bitte gib deinen Namen ein: " dann blinkt dahinter der cursor, und man muß seinen namen eingeben und enter druecken.
    danach gibt das proggie noch in der naechsten zeile "Dein Name ist z.b. bobby" aus. sowas will ich nun in nem formular machen. zum beispiel in nem memo oder sonst wo. ansonsten muesste ich die eingabe in nem z.b. Edit machen.

    wenns irgendwie moeglich waere, n reines terminal fenster in ein form einzubetten, solls mir auch recht sein.

    Deadman



  • Hm, also Ein- und Ausgabe über ein Memo zu steuern wäre zwar möglich aber vermutlich nicht ganz so einfach zu proggen. Einfacher wäre es, das Memo nur als reine Ausgabe zu nehmen und für Eingaben ein Edit darunter zu plazieren. Man kann ja den Inhalt des Editfelds nach erfolgter Eingabe in das Memo übertragen, wenn Du verstehst was ich meine 😉



  • hi peter ...

    ja wie ich es ansonsten mache is mir schon klar. ich will es aber nicht so machen. mir gehts eben darum, das ich das irgendwie so hinbekomme, das es wie im terminal funktioniert.

    Deadman



  • Dann musst du das halt selbst machen (Fenster zeichnen, Text zeichnen, Eingabe auswerten, neuen Text zeichnen usw.) TMemo ist nun mal nur zur Textausgabe gedacht.



  • So jetzt hab ich mir ein paar Gedanken zu dem Thema gemacht. Du willst Handeingaben ins Memo versenden. So eine Eingabe wird meist mit "Return" abgeschlossen. Also geht es nur darum, eine Eingabe ins Memo zu extrahieren um diese dann weiterverarbeiten zu können. Hier ein kleiner Codeschnipsel:

    void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)
    {
        AnsiString Eingabe;
        TMemo *Memo=(TMemo*)Sender;
    
        if(Key==13)
        {   Eingabe=Memo->Lines->Strings[Memo->CaretPos.y];
            ShowMessage(Eingabe);
        }
    }
    

    Drückt man im Memo die Returntaste, wird hier die aktuelle Eingabezeile in den AnsiString "Eingabe" übertragen und kann ganz leicht ausgewertet werden. Bei einem Terminalprogramm werden die Benutzereingaben in der Regel hinter einem Prompt eingegeben. Du musst also hier nur noch den Promptstring, der sich natürlich nach Drücken der Returntaste auch in "Eingabe" befindet, wegfiltern und hast so die reine Benutzereingabe.
    Ich hoffe, ich hab Dich diesmal richtig verstanden 😉

    [ Dieser Beitrag wurde am 28.12.2002 um 14:09 Uhr von Peter editiert. ]



  • Naja, da fehlt aber noch einiges zum Terminal-Verhalten. ZB. dass man nur in der letzten Zeile schreiben kann usw. 😉

    Ich würde mir da lieber bei Torry o.ä. einen fertigen Terminal-Emulator besorgen. Oder besser noch, wie schon von Peter empfohlen, das Programm so umschreiben, dass Ein- und Ausgabe GUI-konform erfolgen.



  • Das Wichtigste was auf jeden Fall noch fehlt, die Cursorposition muss natürlich bei "automatischen" Ausgaben ins Memofeld entsprchend nachgeführt werden. Ich sagte ja oben, es wird nicht ganz einfach 🙄
    Nur um es zu erwähnen, ich persönlich verwende ungern frende Kompos wenn es sich irgendwie vermeiden lässt und schon garkeine Komponenten, bei denen ich keinen Quelltext vorliegten habe 🕶 Aber das muss jeder für sich entscheiden 😉


Log in to reply