Seite 1 von 1

Aufruf eines Editors mit Übergabe eines Charakterstring [ERL

Verfasst: Mo, 13. Feb 2012 18:32
von Manfred
Hi,

ich schreibe bei Fehlermeldungen einen gesammelten Text in eine Textdatei. Jede Meldung wird hinten angefügt, für eine History. Ich würde jetzt aber gerne die letzte Meldung nicht nur an die Textdatei anhängen, sondern auch zum Ansehen am Bildschirm und dann evtl. zum Ausdruck möglich machen. Die komplette Meldung ist jetzt im Speicher in einer Var, wie kriege ich die jetzt an einen Editor, den ich dann per Runshell aufrufe, übergeben? Der Text liegt ja nicht als Datei vor und das Programm wird an dieser Stelle IMMER beendet. Oder komme ich nicht umhin eine temporäre Datei kurz zu erzeugen und die dann aufzurufen?

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Mo, 13. Feb 2012 19:43
von Tom
Ich verstehe das Problem nicht. Du kannst RunShell asynchron (dritter Parameter .T.) ausführen, dann läuft Dein Programm weiter und kann sich sogar beenden, ohne das das gestartete externe Programm beendet wird. Den Text schreibst Du in eine Datei im Temp-Verzeichnis (es müsste dazu einen Thread geben, wie man das Benutzer-Temp-Verzeichnis via API herausfindet) und gibst ihr einen temporären Namen (Funktion "TempFile()"). Das Temp-Verzeichnis wird bei "Laufwerk bereinigen" ohnehin mitgelöscht, so dass Du Dich auch nicht um Fragmente scheren müsstest.

Aber so ganz verstehe ich nicht einmal den Ansatz. Was spricht dagegen, einfach eine MsgBox() anzuzeigen, bevor sich Dein Programm beendet? Damit sind auch mehrzeilige Strings darstellbar.

Edit: Notepad, Wordpad und der Windows-Editor können nicht mit einem Text als Parameter gestartet werden, den sie anzeigen sollen. Nur mit Dateinamen.

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Mo, 13. Feb 2012 19:49
von Manfred
Ja Tom,

MsgBox. Das war die zündende Idee. Danke aber daran habe ich mal wieder nicht gedacht. :roll: Das genügt mir erstmal.

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Mo, 13. Feb 2012 19:54
von Tom
Schön. :) Längeren Text u.U. an einigen Stellen mit CR/LF versehen. :wink:

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Mo, 13. Feb 2012 20:51
von Klaus Stebner
Hallo Manfred,

bei mir mache ich sowas meistens mit DCMULTILINE.
Dann spielt die Länge des Textes auch keine Rolle.

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Mo, 13. Feb 2012 21:48
von UliTs
Oder einfach XbpMle verwenden :-)

Uli

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Di, 14. Feb 2012 6:05
von Manfred
OK,

Allerdings ist diese Routine für Hybrid wie für GUI gedacht. Bei den letzten beiden Vorschlägen müßte ich dann noch etwas Aufwand treiben.

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Di, 14. Feb 2012 10:25
von Tom
XbpMLE oder DCMULTILINE - ist ja dasselbe - müssten wieder in einen Dialog eingebunden, mit einem Eventhandler versehen usw. werden, was an einer Stelle, an der es um Laufzeitfehlerbehandlung geht, nicht ganz unkritisch ist. Eine MsgBox() - letztlich ein simpler API-Call - ist da schon verlässlicher, davon abgesehen immer modal und eben auch mit längerem Text benutzbar.

Ich benutze für derlei einen Taskdialog (s.u.). Vorher wird aber geprüft, um welche Art von Fehler es sich gehandelt hat, und nicht bei allen erscheint der Dialog. Außerdem wird der Fehler in eine Log-Datei geschrieben, ein Report mit Screenshot erzeugt usw. Der Button "Details anzeigen" liefert die Fehlerbeschreibung (der Dialog erweitert sich), also genau das, um das es Dir hier vermutlich geht. Es gibt aber auch Einstellungen, die all das unterbinden und lediglich einen Log-Eintrag, eine Mail an unseren Support und eine Beendigung des Programmes auslösen. Der Taskdialog ist noch mit einer zusätzlichen Option "Fehler korrigieren" verfügbar, wenn bestimmte Fehlerarten vorliegen (Symbol ist kein Datenbankfeld, unzulässige Funktion usw - also Fehler, die auf Probleme mit Tabellen oder Indexen verweisen, und die das Programm selbst korrigieren kann).

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Di, 14. Feb 2012 10:30
von Manfred
Hi Tom,

das sieht natürlich recht charmant aus. Aber im Moment genügt mir der Tipp mit der MsgBox. Alles weitere werde ich mal nach und nach bauen, wenn ich wieder etwas mehr Zeit habe. Im Moment erweitere ich gerade die Möglichkeiten, was so alles passieren kann. Und ich dachte ich hätte schon recht viel abgefangen. Aber das war falsch gedacht. :roll:

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Mi, 15. Feb 2012 4:11
von AUGE_OHR
Manfred hat geschrieben:das sieht natürlich recht charmant aus. Aber im Moment genügt mir der Tipp mit der MsgBox. Alles weitere werde ich mal nach und nach bauen ...
du willst ein TaskDialog Control bauen ? da würde ich doch zu Codejock Controls greifen.

Re: Aufruf eines Editors mit Übergabe eines Charakterstring

Verfasst: Mi, 15. Feb 2012 7:11
von Manfred
Oops,

da war nicht die Rede von (zumindest vorerst). Mir gefiel nur die Aufmachung. Den Namen habe ich gar nicht gesehen.