Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine? (https://www.delphipraxis.net/200075-editor-fenster-oder-memo-fenster-einer-nicht-visuellen-routine.html)

Andreas13 17. Mär 2019 11:15

Delphi-Version: XE5

Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Hallo Delphi Community,

da ich fast ausschließlich reine technische Berechnungen OHNE visuelle Komponenten programmiere, stoße ich mit folgender Aufgabenstellung leider an meine Grenzen:

Eine Berechnungsroutine ist über eine DLL in Excel eingebunden und erledigt umfangreiche Berechnungen und übergibt diese an Excel. So weit, so gut.

Nun möchte ich innerhalb obiger NICHT-visueller Berechnungsroutine ein Editor-Fenster oder Memo-Fenster etc. zur Anzeige von Zwischenergebnissen zur Laufzeit aufmachen.
Wie läßt sich das bewerkstelligen?

Vielen Dank für Eure Hilfe im Voraus!

Gruß
Andreas

jaenicke 17. Mär 2019 16:07

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Vielleicht hilft dir diese Bibliothek:
https://github.com/jaenicke/MTCL
Die ist noch im Anfangsstadium, funktioniert aber schon. Und du kannst die Anzeige direkt aus einem Berechnungsthread aktualisieren.

TiGü 17. Mär 2019 17:23

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Würde es auch ein Konsolenfenster tun?

jaenicke 17. Mär 2019 17:52

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Ein Konsolenfenster aus Excel heraus als Anzeige fände ich relativ unüblich. Möglich ist natürlich alles.

Andreas13 17. Mär 2019 18:49

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Hallo Sebastian,

danke für den Tipp, aber leider konnte ich ihn (noch) umsetzen...
Mein Problem ist, daß meine Anwendung OHNE jedes Fenster läuft: es ist eine reine Berechnungsreoutine, die still und heimlich Excel mit Ergebnissen füttert.
Ich bräuchte lediglich ein Fester wie z.B. die MessageBox(..), wo ich viele Zwischenergebnisse anzeigen und das Fenster danach wieder schließen / löschen kann.

Gruß
Andreas

jaenicke 17. Mär 2019 20:37

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Deshalb vermute ich ja, dass es damit gehen könnte, da das damit nicht über die VCL läuft. Denn die wäre in einer solchen DLL eventuell etwas zickig (es könnte aber auch gehen).

EWeiss 17. Mär 2019 20:58

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Ich bräuchte lediglich ein Fester wie z.B. die MessageBox(..), wo ich viele Zwischenergebnisse anzeigen und das Fenster danach wieder schließen / löschen kann.
Schau dir doch mal von Luckie die NonVcl Samples an damit sollte das kein Problem sein.

gruss

jaenicke 17. Mär 2019 21:43

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von EWeiss (Beitrag 1427941)
Schau dir doch mal von Luckie die NonVcl Samples an damit sollte das kein Problem sein.

Das ist im Grunde auch nichts anderes als was ich gepostet habe, nur dass ich das ganze gekapselt habe, damit es einfacher ist. Leider bin ich bisher nicht dazu gekommen daran weiter zu arbeiten.

EWeiss 17. Mär 2019 21:55

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von jaenicke (Beitrag 1427944)
Zitat:

Zitat von EWeiss (Beitrag 1427941)
Schau dir doch mal von Luckie die NonVcl Samples an damit sollte das kein Problem sein.

Das ist im Grunde auch nichts anderes als was ich gepostet habe, nur dass ich das ganze gekapselt habe, damit es einfacher ist. Leider bin ich bisher nicht dazu gekommen daran weiter zu arbeiten.

sorry habe es mir nicht angeschaut.


gruss

hoika 18. Mär 2019 02:33

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Hallo,
sobald du bei einem Fenster bist, ist es ja nicht mehr non VCL.
Such hier mal nach SemiModal. Aber damit bist du bei der VCL.

EWeiss 18. Mär 2019 04:55

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

sobald du bei einem Fenster bist, ist es ja nicht mehr non VCL.
Kann man drüber streiten Non VCL ist es solange wie man sich NICHT der VCL bedient.
Das hat nichts damit zu tun ob man ein Fenster erstellt oder nicht.

gruss

jaenicke 18. Mär 2019 06:21

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von EWeiss (Beitrag 1427954)
Zitat:

sobald du bei einem Fenster bist, ist es ja nicht mehr non VCL.
Kann man drüber streiten Non VCL ist es solange wie man sich NICHT der VCL bedient.

Da gibt es nichts zu streiten. Non-VCL bedeutet nur, dass man nicht die VCL verwendet, das sagt der Begriff ja schon. Das hat nichts damit zu tun, ob man Fenster anzeigt, Konsolenfenster aufmacht, mit dem Internet kommuniziert oder irgendetwas anderes.

Zitat:

Zitat von Andreas13 (Beitrag 1427938)
danke für den Tipp, aber leider konnte ich ihn (noch) umsetzen...

Falls das so nicht funktioniert, wäre ein Beispiel-DLL-Projekt hilfreich. Die DLL muss ja nix weiter tun als eine Dummyberechnung durchführen und ein Ergebnis anzeigen versuchen. Denn ich habe nicht die Zeit mir anzuschauen was ich für eine solche DLL machen müsste. Wenn ich den Quelltext für eine einfache DLL hätte, die ich einfach in Excel 2010 einbinden und so ein wenig testen könnte, würde ich mir das gerne anschauen. Das interessiert mich jetzt rein aus Neugier. :wink:

EWeiss 18. Mär 2019 06:30

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Da gibt es nichts zu streiten. Non-VCL bedeutet nur, dass man nicht die VCL verwendet, das sagt der Begriff ja schon. Das hat nichts damit zu tun, ob man Fenster anzeigt, Konsolenfenster aufmacht, mit dem Internet kommuniziert oder irgendetwas anderes.
Habe ich irgendetwas anderes gesagt?
Ich bezog mich darauf das er meint wenn ein Fenster erzeugt wird das es nicht mehr Non VCL ist!

Bitte nochmals lesen.
btw.. du verwendest die VCL in deinem Github projekt das ist nicht mehr nonvcl.
Siehe Classes.

gruss

TiGü 18. Mär 2019 08:03

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von EWeiss (Beitrag 1427957)
Zitat:

Da gibt es nichts zu streiten. Non-VCL bedeutet nur, dass man nicht die VCL verwendet, das sagt der Begriff ja schon. Das hat nichts damit zu tun, ob man Fenster anzeigt, Konsolenfenster aufmacht, mit dem Internet kommuniziert oder irgendetwas anderes.
Bitte nochmals lesen.
btw.. du verwendest die VCL in deinem Github projekt das ist nicht mehr nonvcl.
Siehe Classes.

Versuche doch mal herauszufinden, was der Unterschied zwischen VCL und RTL ist.

jaenicke 18. Mär 2019 08:04

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von EWeiss (Beitrag 1427957)
Habe ich irgendetwas anderes gesagt?

Nein, darum habe ich deine Aussage ja auch bestätigt. ;-)

Zitat:

Zitat von EWeiss (Beitrag 1427957)
btw.. du verwendest die VCL in deinem Github projekt das ist nicht mehr nonvcl.
Siehe Classes.

Die Unit heißt nicht umsonst System.Classes, da sie aus der RTL stammt und nicht aus der VCL wie z.B. Vcl.Forms.

peterbelow 18. Mär 2019 11:40

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von Andreas13 (Beitrag 1427912)
Hallo Delphi Community,

da ich fast ausschließlich reine technische Berechnungen OHNE visuelle Komponenten programmiere, stoße ich mit folgender Aufgabenstellung leider an meine Grenzen:

Eine Berechnungsroutine ist über eine DLL in Excel eingebunden und erledigt umfangreiche Berechnungen und übergibt diese an Excel. So weit, so gut.

Nun möchte ich innerhalb obiger NICHT-visueller Berechnungsroutine ein Editor-Fenster oder Memo-Fenster etc. zur Anzeige von Zwischenergebnissen zur Laufzeit aufmachen.
Wie läßt sich das bewerkstelligen?

Vielen Dank für Eure Hilfe im Voraus!

Gruß
Andreas

Ich nehme mal an, die Berechnung soll weiter laufen, während das Fenster angezeigt wird? Das kriegst Du nur hin, wenn eines von beiden in einem sekundären Thread läuft.

Zuerst mal: es ist kein Problem, in einer DLL die VCL zu verwenden, solange Du nur modale Fenster anzeigst. Die haben ihre eigene Message loop und sind somit unabhängig von der message loop der Hostanwendung. Mein Vorschlag wäre also folgendes:
  • Lege ein normales VCL Form für die Anzeige an
  • In der nach Excel exportierten Funktion erzeugst Du eine Instanz dieses Forms und zeigst sie per ShowModal
  • Im OnPaint event des Forms setzt Du zuerst OnPaint auf nil, damit der Handler nur einmal aufgerufen wird, und startest dann den Thread für die Berechnung
  • Der Thread kann Zwischenergebnisse per Synchronize an das Form zur Anzeige schicken
  • Wenn die Berechnung fertig ist legt der Thread das Ergebnis in einem Feld des Forms ab und setzt Modalresult auf mrOK, beendet sich dann
  • In der exportierten Routine kehrt daraufhin der ShowModal-Aufruf zurück, die Routine holt das Ergebnis aus dem Feld des Forms, zerstört das Form, und gibt das Ergebnis an Excel zurück

Es gibt da noch ein potentielles Problem mit der Z-Order. Um das Meldungsfenster zuverlässig oberhalb des Excel-Fensters zu lassen solltest Du den formstyle auf fsTopMost setzen, oder die CreateParams-Methode überschreiben und params.wndParent auf den Rückgabewert von GetForegroundWindow setzen.

Codehunter 18. Mär 2019 12:01

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von peterbelow (Beitrag 1427992)
Es gibt da noch ein potentielles Problem mit der Z-Order. Um das Meldungsfenster zuverlässig oberhalb des Excel-Fensters zu lassen solltest Du den formstyle auf fsTopMost setzen, oder die CreateParams-Methode überschreiben und params.wndParent auf den Rückgabewert von GetForegroundWindow setzen.

Da schauderts mich schon wieder... fsTopMost ist die schlimmste Vergewohltätigung die TForm zu bieten hat. Besonders spaßig wenn sich eine MesageBox dahinter legt und dann das ganze Programm blockiert. IMHO sollte man sehen dass man sich das WindowHandle der Containeranwendung (in dem Fall Excel) besorgt und dieses bei der Anzeige von Sub-Fenstern oder MessageBoxes gebrauchen.

ConnorMcLeod 18. Mär 2019 13:51

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von Andreas13 (Beitrag 1427912)
Nun möchte ich innerhalb obiger NICHT-visueller Berechnungsroutine ein Editor-Fenster oder Memo-Fenster etc. zur Anzeige von Zwischenergebnissen zur Laufzeit aufmachen.
Wie läßt sich das bewerkstelligen?

Vllt hilft Dir Peter Below's Threaded Splashscreen weiter.

jaenicke 18. Mär 2019 15:05

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von peterbelow (Beitrag 1427992)
[*]Der Thread kann Zwischenergebnisse per Synchronize an das Form zur Anzeige schicken

Oder man benutzt wie vorgeschlagen ein multithreadfähiges Fenster. :wink:
Dann kann man direkt aus einem Berechnungsthread etwas in die Anzeige schreiben und die Anzeige läuft auch weiter, wenn der Hauptthread beschäftigt ist.

TiGü 18. Mär 2019 15:23

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Wenn es nur darum geht, um zu gucken was die Berechnung machen (als Log/Debugging), dann würde sich immer noch ein Konsolenfenster anbieten.

jaenicke 18. Mär 2019 19:10

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Ich habe das als Statusanzeige für den Enduser verstanden. Und da finde ich ein Konsolenfenster in der heutigen Zeit weniger sinnvoll.

Aber wie dem auch sei, erst einmal geht es darum überhaupt etwas zu sehen, egal wie.

Andreas13 18. Mär 2019 20:38

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,

danke für Eure bisherigen Reaktionen und die für mich sehr lehrreiche Diskussion.
Ich habe für Euch eine kleine Demo vorbereitet. Diese besteht aus zwei Dateien:

1): DLL_for_Excel_Test_0.dll
2): DLL_for_Excel_Test_0.xlsm

Beide befinden sich gezippt in:

DLL_for_Excel_Test_0.zip

In der Excel-Datei gibt es auch einige Hinweise für die Benutzung.

Danke!

Viele Grüße

Andreas

Andreas13 18. Mär 2019 21:19

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Sorry, habe zuvor den Quellcode vergessen:

Delphi-Quellcode:
Library DLL_for_Excel_Test_0;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss die erste
  Unit in der USES-Klausel Ihrer Bibliothek UND in der USES-Klausel Ihres Projekts
  (wählen Sie 'Projekt-Quelltext anzeigen') sein, wenn Ihre DLL Prozeduren oder Funktionen
  exportiert, die Strings als Parameter oder Funktionsergebnisse übergeben. Dies
  gilt für alle Strings, die an oder von Ihrer DLL übergeben werden, auch für solche,
  die in Records und Klassen verschachtelt sind. ShareMem ist die Interface-Unit zur
  gemeinsamen BORLNDMM.DLL-Speicherverwaltung, die zusammen mit Ihrer DLL
  weitergegeben werden muss. Übergeben Sie String-Informationen mit PChar- oder ShortString-Parametern, um die Verwendung von BORLNDMM.DLL zu vermeiden.
 }

uses
  System.SysUtils
, System.Classes
, WinAPI.Windows
;

{$R *.res}

TYPE
  ExcelDouble = Double;   {8 Bytes für diese 32-Bit-DLL}
  ExcelBoolean = WordBool; {2 Bytes für diese 32-Bit-DLL}

Procedure Zwischenwerte_Anzeigen(Text1: String);
VAR
  S : String;

Begin
   S:= 'Das ist ein provisorisches Anzeigefenster für optionale Zwischenergebnisse, ' + #13;
   S:= S + 'die nicht unbedingt nötig sind, oder welche Excel gar NICHT darstellen kann.' + #13;
   S:= S + 'Das können z. B. umfangreiche Vektoren, Matrizen etc. sein oder aber auch Ergebnisse, die mit ';
   S:= S + 'Multipräzisions-Arithmetik auf 75 .. 150 Ziffern genau ermittelt wurden' + #13 + #13;
   S:= S + 'Momentan wird dieser Text behelfsweise mittels WinAPI.Windows.MessageBox(..) dargestellt, weil ich ... ';
   S:= S + 'zu meiner Schade gestehen muß, daß ich nicht weiß, wie hier ich anstelle der MessageBox(..) z.B. ein ';
   S:= S + 'Memo-Fenster aufmachen kann.' + #13 + #13;
   S:= S + 'Vielleicht kannst DU mir dabei helfen???? Danke im Voraus!' + #13;
   S := S + 'Gruß, Andreas' + #13 + #13;
   S := S + Text1 + #13;
   MessageBox(0, PChar(S), 'Provisorische Notlösung...!', MB_OK);
End; {Zwischenwerte_Anzeigen}
{---------------------------}

 
Function Komplizierte_Berechnung(a, b: ExcelDouble; Zwischenwerte: ExcelBoolean = True): ExcelDouble; StdCall;
// Test zum Demonstrieren: Result := a*b;

Begin
  Try
    Result:= a*b;
    IF Zwischenwerte Then Begin
      Zwischenwerte_Anzeigen('Zwischenergebnis für den User= 1.2345678901234567890ABCDEFGHIJ123452345678901234567890ABCDEFGHIJ12345');
      Result:= a*b;
      Exit;  
    End;
  Except
    Exit;
  End;
End;{Komplizierte_Berechnung}
{---------------------------}



Exports

Komplizierte_Berechnung
;

Begin

End.

Andreas13 18. Mär 2019 21:20

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Sorry, habe zuvor den Quellcode vergessen:

Delphi-Quellcode:
Library DLL_for_Excel_Test_0;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss die erste
  Unit in der USES-Klausel Ihrer Bibliothek UND in der USES-Klausel Ihres Projekts
  (wählen Sie 'Projekt-Quelltext anzeigen') sein, wenn Ihre DLL Prozeduren oder Funktionen
  exportiert, die Strings als Parameter oder Funktionsergebnisse übergeben. Dies
  gilt für alle Strings, die an oder von Ihrer DLL übergeben werden, auch für solche,
  die in Records und Klassen verschachtelt sind. ShareMem ist die Interface-Unit zur
  gemeinsamen BORLNDMM.DLL-Speicherverwaltung, die zusammen mit Ihrer DLL
  weitergegeben werden muss. Übergeben Sie String-Informationen mit PChar- oder ShortString-Parametern, um die Verwendung von BORLNDMM.DLL zu vermeiden.
 }

uses
  System.SysUtils
, System.Classes
, WinAPI.Windows
;

{$R *.res}

TYPE
  ExcelDouble = Double;   {8 Bytes für diese 32-Bit-DLL}
  ExcelBoolean = WordBool; {2 Bytes für diese 32-Bit-DLL}

Procedure Zwischenwerte_Anzeigen(Text1: String);
VAR
  S : String;

Begin
   S:= 'Das ist ein provisorisches Anzeigefenster für optionale Zwischenergebnisse, ' + #13;
   S:= S + 'die nicht unbedingt nötig sind, oder welche Excel gar NICHT darstellen kann.' + #13;
   S:= S + 'Das können z. B. umfangreiche Vektoren, Matrizen etc. sein oder aber auch Ergebnisse, die mit ';
   S:= S + 'Multipräzisions-Arithmetik auf 75 .. 150 Ziffern genau ermittelt wurden' + #13 + #13;
   S:= S + 'Momentan wird dieser Text behelfsweise mittels WinAPI.Windows.MessageBox(..) dargestellt, weil ich ... ';
   S:= S + 'zu meiner Schade gestehen muß, daß ich nicht weiß, wie hier ich anstelle der MessageBox(..) z.B. ein ';
   S:= S + 'Memo-Fenster aufmachen kann.' + #13 + #13;
   S:= S + 'Vielleicht kannst DU mir dabei helfen???? Danke im Voraus!' + #13;
   S:= S + 'Gruß, Andreas' + #13 + #13;
   S:= S + Text1 + #13;
   MessageBox(0, PChar(S), 'Provisorische Notlösung...!', MB_OK);
End; {Zwischenwerte_Anzeigen}
{---------------------------}

 
Function Komplizierte_Berechnung(a, b: ExcelDouble; Zwischenwerte: ExcelBoolean = True): ExcelDouble; StdCall;
// Test zum Demonstrieren: Result := a*b;

Begin
  Try
    Result:= a*b;
    IF Zwischenwerte Then Begin
      Zwischenwerte_Anzeigen('Zwischenergebnis für den User= 1.2345678901234567890ABCDEFGHIJ123452345678901234567890ABCDEFGHIJ12345');
      Result:= a*b;
      Exit;  
    End;
  Except
    Exit;
  End;
End;{Komplizierte_Berechnung}
{---------------------------}



Exports

Komplizierte_Berechnung
;

Begin

End.

Andreas13 18. Mär 2019 21:25

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sorry,
habe zuvor den Quellcode für die DLL vergessen!

Siehe Anhang:

DLL_for_Excel_Test_0.dpr

Gruß, Andreas

jsp 19. Mär 2019 10:04

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Du könntest auch OutputDebugString verwenden, und dann einfach DebugView starten:
https://docs.microsoft.com/en-us/sys...oads/debugview

Gruss, Jörn

Andreas13 19. Mär 2019 22:04

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von EWeiss (Beitrag 1427941)
Zitat:

Ich bräuchte lediglich ein Fester wie z.B. die MessageBox(..), wo ich viele Zwischenergebnisse anzeigen und das Fenster danach wieder schließen / löschen kann.
Schau dir doch mal von Luckie die NonVcl Samples an damit sollte das kein Problem sein.

gruss

Danke für den tollen Tipp: Habe gerade angefangen, die Tutorien und die NonVcl Samples von "Luckie" zu studieren!

Gruß, Andreas

jaenicke 20. Mär 2019 09:00

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Liste der Anhänge anzeigen (Anzahl: 1)
So recht verstehe ich das Problem nicht. Es funktioniert mit der threadbasierten Lösung von mir genauso wie mit einem stinknormalen VCL-Formular. Beispiel mit einem VCL-Fenster siehe Anhang (für einen vollen Zeilenumbruch musst du den noch zu dem Windows-Zeilenumbruch ändern, sprich z.B. die Konstante sLineBreak nutzen, statt nur #13 zu benutzen).

Andreas13 20. Mär 2019 16:46

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von jaenicke (Beitrag 1428147)
So recht verstehe ich das Problem nicht. Es funktioniert mit der threadbasierten Lösung von mir genauso wie mit einem stinknormalen VCL-Formular. Beispiel mit einem VCL-Fenster siehe Anhang (für einen vollen Zeilenumbruch musst du den noch zu dem Windows-Zeilenumbruch ändern, sprich z.B. die Konstante sLineBreak nutzen, statt nur #13 zu benutzen).

Sebastian, 10^6 Dank für Deine Hilfe! Es funktioniert einwandfrei und ich konnte die Lösung nachvollziehen und verstehen. Mein Fehler war, daß ich anstelle des VCL-Formulars eine VCL-Formularanwendung genommen habe...

Noch eine Frage bitte: Was müsste ich an Deiner Lösung modifizieren, wenn ich dasselbe Memo-Fenster in einer reinen Konsolenanwendung benutzen möchte? Oder geht es gar nicht, sondern nur über WinAPI-Routinen?

Gruß, Andreas

Andreas13 20. Mär 2019 16:48

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von jsp (Beitrag 1428057)
Du könntest auch OutputDebugString verwenden, und dann einfach DebugView starten:
https://docs.microsoft.com/en-us/sys...oads/debugview

Gruss, Jörn

Hallo Jörn,
danke für den Tipp, aber die Lösung von Sebastian ist die einfachste für meine Aufgabenstellung!

Gruß, Andreas

jaenicke 20. Mär 2019 20:33

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Zitat:

Zitat von Andreas13 (Beitrag 1428186)
Noch eine Frage bitte: Was müsste ich an Deiner Lösung modifizieren, wenn ich dasselbe Memo-Fenster in einer reinen Konsolenanwendung benutzen möchte?

Das funktioniert ganz normal, nur dass zusätzlich ein Konsolenfenster aufgeht. Sprich du erstellst eine normale VCL-Anwendung und fügst dann in der Projektdatei (.dpr) die Zeile für eine Konsolenanwendung hinzu:
Delphi-Quellcode:
program Project28;

uses
  Vcl.Forms,
  Unit28 in 'Unit28.pas' {Form28};

{$APPTYPE CONSOLE} // <-- diese Zeile kommt dazu

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm28, Form28);
  Application.Run;
end.

Andreas13 21. Mär 2019 17:20

AW: Editor-Fenster oder Memo-Fenster in einer NICHT-visuellen Routine?
 
Danke für alle Beiträge & Diskussionen! Habe viel von Euch gelernt.
Gruß, Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz