konsolenausgabe in mainform?



  • hallo
    kann man auf der mainform eine konsole als vcl-objekt darstellen?
    möchte zum debuggen einer vcl-application mit viel rechnerei im hintergrund variablen-werte ausgeben,
    und zwar ne ganze menge.
    habe das im moment über ein memo gelöst, die ausgabe ist aber recht mühsam,
    da alles als ansistring gecastet werden muss.
    mir wäre die stream ausgabe (<<<) wie in der dos-konsole lieber, da es viel einfacher zum proggen wär.
    die konsole sollte ev. im fertigen programm auch noch zur verfügung stehn nach bedarf, damit man sieht was gerade gerechnet wird.
    also quasi ein debbug-modus, der ein frame öffnet, das wie dos alles zeilenweise ausspuckt.
    geht das? gibts schon ne vcl komponente die das kann? wo muss ich suchen?



  • Schau mal nach

    DebugOutput



  • wo denn? 😕
    im forum und in der bds hilfe find ich nichts..

    google:
    www.DebugOutput.com 😃



  • Sends a string to the system debugger.

    procedure DebugOutput(const AText: string);

    Parameters

    const AText: string

    Value to be sent to the debugger.

    Description

    DebugOutput is a procedure used to send the string in AText to either the active debugger for a process, or the system debugger. If there is no active debugger for the current application, DebugOutput has no effect.
    DebugOutput encapsulates the platform-specific calls needed to send the string to the debugger for the current application. For the Windows platform, the WIN32 API procedure is OutputDebugString. On the Linux platform, DebugOutput writes the message followed by CRLF to the standard error handle (StdErr).



  • seb(i) schrieb:

    möchte zum debuggen einer vcl-application mit viel rechnerei im hintergrund variablen-werte ausgeben,
    und zwar ne ganze menge.
    habe das im moment über ein memo gelöst, die ausgabe ist aber recht mühsam,
    da alles als ansistring gecastet werden muss.
    mir wäre die stream ausgabe (<<<) wie in der dos-konsole lieber, da es viel einfacher zum proggen wär.

    Du könntest für diesen Zweck eine eigene Klasse erstellen und in dieser wie in std::ostream den <<-Operator überladen, das dürfte nicht allzu problematisch sein.



  • danke,

    aber das meint ich ned.
    ich wollt halt quasi ein textfeld auf meiner mainform
    wo ich das ganze geschlumps drauf streamen könnt, und so während dem ausführen der app. alles auf ein blick habe. oder kann ich den debugger beliebig definieren? in console applications kann ich ja nen standard-output stream, eben meist die konsole, angeben

    If there is no active debugger for the current application,..

    😕
    will das eben ev. auch in der fertigen .exe zur verfühgung stellen.



  • audacia schrieb:

    Du könntest für diesen Zweck eine eigene Klasse erstellen und in dieser wie in std::ostream den <<-Operator überladen, das dürfte nicht allzu problematisch sein.

    😕 blutiger anfaenger!! sehr problematisch!!!
    könnt ich das TMemo als grundlage nehmen? oder wo fang ich an? TEdit?



  • seb(i) schrieb:

    😕 blutiger anfaenger!! sehr problematisch!!!
    könnt ich das TMemo als grundlage nehmen? oder wo fang ich an? TEdit?

    Da solltest du dich natürlich zunächst mit OOP und speziell Operatorenüberladung beschäftigen.
    Wenn du dich auch mit der Ausgabe im C-Stil zufriedengibst, dann könntest du z.B. AnsiString::sprintf() benutzen.



  • gut so blutig dann auch nicht, dass mit oop und operatorüberladung hab ich schon geschnallt.
    hab nur noch nie selbst gui/vcl-komponenten erstellt. wie das geht mit text darstellen in nem frame und zeilenvorschub ala dos, weis ich ned.
    dacht halt, vielleicht gibs sowas schon.
    aber wenn das zu aufwendig wird, geb ich mich mit dem memo
    und der string ausgabe zufrieden. hab gemerkt dass das recht gut geht, wenn man nicht mit char* arbeitet, sondern gleich mit ansistring. die eingaben hol ich ja eh aus nem edit-feld.
    habs jetz so gelöst:

    Memo1->Lines->Add( IntToStr(my_ID) + ": " + my_name )
    

    diese zeile wird von jedem objekt in ner liste ausgegeben.
    nicht so schön oder?

    danke trotzdem



  • seb(i) schrieb:

    hab nur noch nie selbst gui/vcl-komponenten erstellt. wie das geht mit text darstellen in nem frame und zeilenvorschub ala dos, weis ich ned.
    ...
    habs jetz so gelöst:

    Memo1->Lines->Add( IntToStr(my_ID) + ": " + my_name )
    

    Ich meinte nicht, daß du eine VCL-Komponente erstellen solltest, sondern eine Klasse im Stil von std::ostream, deren Instanzen sich wie cout verhalten und Ausgaben wie von dir beschrieben auf ein Memofeld, das z.B. im Konstruktor übergeben werden könnte, umleitet.


Anmelden zum Antworten