AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Konsolenanwendung - crt.pas - Console Library
Thema durchsuchen
Ansicht
Themen-Optionen

Konsolenanwendung - crt.pas - Console Library

Ein Thema von arcticwolf · begonnen am 26. Jun 2023 · letzter Beitrag vom 27. Jul 2023
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#11

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 27. Jun 2023, 12:52
Aber ich vermute, das ist nicht die Programmiersprache, für die Du das suchst.
Jep
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 27. Jun 2023, 14:06
Jetzt läuft ja hinter der cmd.exe bzw. der neuen Terminal-App ein Console-Host, je nach Ziel (Windows-Console, PowerShell, Linux-Bash usw)

Ich hatte mal versucht rauszufinden, wie das intern abläuft, aber in der Hilfe noch nicht wirklich was gefunden, bzw. im QuellCode des Terminals, da sieht doch niemand durch.

Sonst hätte man sich da auch "einfach" was mit Delphi bauen können.

https://github.com/microsoft/terminal
https://learn.microsoft.com/de-de/windows/terminal/
https://apps.microsoft.com/store/det...l/9N0DX20HK701

https://www.golem.de/news/windows-11...08-167912.html
https://www.computerbild.de/artikel/...-30464147.html
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von arcticwolf
arcticwolf

Registriert seit: 3. Aug 2021
Ort: Erfurt
41 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 27. Jun 2023, 14:20
Hallo Wolfgang,
zunächst vielen Dank für Deine Mühe & die Console Library!
Bei mir beschwert sich allerdings mein etwas betagter XE5-Compiler:
Zeile 254:
class operator Equal(Lhs, Rhs: TCoord) : Boolean;
[dcc32 Fehler] Ply.Types.pas(254): E2123 PROCEDURE, FUNCTION, PROPERTY oder VAR erwartet

Ab welcher Delphi-Version ist die Console Library verwendbar?
Kann ich Dir leider nicht sagen / habe ich noch nicht getestet.
Mit der aktuellen Delphi 11 CE sollte es auf jeden Fall funktionieren.

Könnte das vielleicht daran liegen, dass es ein "Helper record" ist? Ich bin mir nicht sicher ob es "Helper Records" in XE5 schon gab oder wenn ja ob es bei XE5 dann in Verbindung mit Klassenoperatoren zu dieser Fehlermeldung kommt?

Du kannst mal versuchen, die beiden "class operator" auszukommentieren, die werden in der Library selbst gar nicht verwendet. Ich habe die nur drinnen, weil ich sie dann im ERP-System genutzt habe. Allerdings wird der Compiler dann sofort bei Zeile 287 wieder meckern. Wenn Du diese beiden auch noch auskommentierst, dann kommt eine Fehlermeldung in Zeile 3286 der Ply.Console.pas. Die Zeile kannst Du (zum testen) auch einfach auskommentieren, da wird zwar dann unnötiger Code ausgeführt, sollte aber nichts machen. Wenn sich der Code dann kompilieren lässt, liegt es an den Helper Record in Verbindung mit class operator. -> Ich könnte dann {$ifdef} einbauen und den Code mit XE5 kompatibel machen.
Wolfgang
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#14

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 27. Jun 2023, 15:28
XE5 kennt leider noch keinen RecordHelper.
Habe versucht Deinen Hinweis umzusetzen, aber das Auskommentieren verursachte weitere Compiler-Fehler in Folge. Auch ein Ersetzen von class operator durch Function führte zu keinem Erfolg, da es dann später bei TCoordHelper.notEqual(..) zu Problemen führte, noch in der ersten Datei Ply.Types.pas.

Möglicherweise habe ich mich ungeschickt angestellt..

Vielleicht wäre Dein fachkundig verwendeter {$ifdef} die bessere Lösung.
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von arcticwolf
arcticwolf

Registriert seit: 3. Aug 2021
Ort: Erfurt
41 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 27. Jun 2023, 15:33
Jetzt läuft ja hinter der cmd.exe bzw. der neuen Terminal-App ein Console-Host, je nach Ziel (Windows-Console, PowerShell, Linux-Bash usw)

Ich hatte mal versucht rauszufinden, wie das intern abläuft, aber in der Hilfe noch nicht wirklich was gefunden, bzw. im QuellCode des Terminals, da sieht doch niemand durch.

Sonst hätte man sich da auch "einfach" was mit Delphi bauen können.

https://github.com/microsoft/terminal
https://learn.microsoft.com/de-de/windows/terminal/
https://apps.microsoft.com/store/det...l/9N0DX20HK701

https://www.golem.de/news/windows-11...08-167912.html
https://www.computerbild.de/artikel/...-30464147.html
Bis eben hatte ich das Windows-Terminal noch gar nicht installiert, also wurde bei mir automatisch der Windows-Konsolenhost verwendet. Unter dem Windows-Terminal läuft mein Code nicht sauber. Sobald das Windows-Terminal installiert ist, kann man unter "Datenschutz und Sicherheit > Für Entwickler > Terminal" einstellen, ob "Windows-Konsolenhost" oder "Windows-Terminal" verwendet werden soll. Wählt man hier den Windows-Konsolenhost läuft mein Code wieder sauber. Jetzt wäre es natürlich interessant zu wissen, ob man Windows irgendwie aus der App heraus vorgeben kann ob der Konsolenhost oder das Terminal verwendet werden soll, unabhängig von der oben genannten Windows-Einstellung. Da muss ich erst einmal recherchieren, oder hat von Euch jemand eine Idee.

Ferner wäre es natürlich interessant zu wissen, ob der Code auch kompatibel zum Windows-Terminal gemacht werden kann. Ein kurzer Test war da eigentlich sehr vielversprechend. Einige der Grundfunktionen die ich nutze scheinen direkt vom Terminal unterstüzt zu werden. Aber für eine ordentliche Bewertung muss ich mich wohl erst mal wieder in der MSDN und/oder der Dokumentation vom Terminal eingraben...
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von arcticwolf
arcticwolf

Registriert seit: 3. Aug 2021
Ort: Erfurt
41 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 27. Jun 2023, 15:38
XE5 kennt leider noch keinen RecordHelper.
...
Vielleicht wäre Dein fachkundig verwendeter {$ifdef} die bessere Lösung.
Das habe ich mir schon gedacht, dass es an dem RecordHelper liegt. Kann mir jemand sagen, ab welcher Delphi-Version diese eingeführt wurden, oder wo ich diese Information finde? Dann würde ich mal versuchen ein paar $ifdef's für ältere Delphi-Versionen einzubauen.
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von arcticwolf
arcticwolf

Registriert seit: 3. Aug 2021
Ort: Erfurt
41 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 28. Jun 2023, 10:24
Ich habe gestern mein altes Delphi XE6 ausgegraben (installiert) und den Code überarbeitet. An den RecordHelpern liegt es bei XE6 nicht, die gab es da auch schon. Da muss es irgendeine Änderung mit den "class operator" gegeben habe. Ich habe jetzt eine Compilerweiche ($IFDEF) zwischen Delphi XE8 und Delphi 10 eingebaut, sodass der Code mit XE6 (und hoffentlich auch XE5) kompiliert werden kann. Das Update ist auf GitHub zu finden.

https://github.com/playcom-de/Console
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 28. Jun 2023, 12:53
Jetzt läuft ja hinter der cmd.exe bzw. der neuen Terminal-App ein Console-Host, je nach Ziel (Windows-Console, PowerShell, Linux-Bash usw)

Ich hatte mal versucht rauszufinden, wie das intern abläuft, aber in der Hilfe noch nicht wirklich was gefunden, bzw. im QuellCode des Terminals, da sieht doch niemand durch.

Sonst hätte man sich da auch "einfach" was mit Delphi bauen können.

https://github.com/microsoft/terminal
https://learn.microsoft.com/de-de/windows/terminal/
https://apps.microsoft.com/store/det...l/9N0DX20HK701

https://www.golem.de/news/windows-11...08-167912.html
https://www.computerbild.de/artikel/...-30464147.html
Bis eben hatte ich das Windows-Terminal noch gar nicht installiert, also wurde bei mir automatisch der Windows-Konsolenhost verwendet. Unter dem Windows-Terminal läuft mein Code nicht sauber. Sobald das Windows-Terminal installiert ist, kann man unter "Datenschutz und Sicherheit > Für Entwickler > Terminal" einstellen, ob "Windows-Konsolenhost" oder "Windows-Terminal" verwendet werden soll. Wählt man hier den Windows-Konsolenhost läuft mein Code wieder sauber. Jetzt wäre es natürlich interessant zu wissen, ob man Windows irgendwie aus der App heraus vorgeben kann ob der Konsolenhost oder das Terminal verwendet werden soll, unabhängig von der oben genannten Windows-Einstellung. Da muss ich erst einmal recherchieren, oder hat von Euch jemand eine Idee.

Ferner wäre es natürlich interessant zu wissen, ob der Code auch kompatibel zum Windows-Terminal gemacht werden kann. Ein kurzer Test war da eigentlich sehr vielversprechend. Einige der Grundfunktionen die ich nutze scheinen direkt vom Terminal unterstüzt zu werden. Aber für eine ordentliche Bewertung muss ich mich wohl erst mal wieder in der MSDN und/oder der Dokumentation vom Terminal eingraben...
Kannst Du mal mit diesem Schnippsel prüfen was unter einem Terminal rauskommt?
Delphi-Quellcode:
function IsConsole: Boolean;
var
  Stdout: THandle;
begin
  Stdout := GetStdHandle(Std_Output_Handle);
  Win32Check(Stdout <> Invalid_Handle_Value);
  Result := Stdout <> 0;
end;
Laut hier -> https://learn.microsoft.com/en-us/wi...e/getstdhandle sollte es nur für eine Konsole funktionieren.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von arcticwolf
arcticwolf

Registriert seit: 3. Aug 2021
Ort: Erfurt
41 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 28. Jun 2023, 13:09
Zitat:
Stdout := GetStdHandle(Std_Output_Handle);
Liefert bei Terminal schon ein gültiges Handle, sogar das gleiche wie bei Konsolenhost. Siehe Ply.Console.Pas Zeile 3839

ConHandleStdOut := GetStdHandle(STD_OUTPUT_HANDLE);

Zum Beispiel die Demo01 (Minimal_Console_App) läuft auch auf einem Terminal. Aber wenn es dann an die erweiterten Funktionen, wie z.B. manipulieren des Font, Änderung der Größe des Konsolenfensters, u.s.w. geht, dann funktioniert das nicht mehr wie gehabt.
Wolfgang
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 28. Jun 2023, 13:40
Ich verstehe.
Was für einen Prozess startet denn eine Konsolen Anwendung mit installierten Terminal?
Mit der klassischen Konsolen Anwendung hab ich "conhost.exe" unter meiner ProcessID.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 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