Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Konsolenanwendung - crt.pas - Console Library (https://www.delphipraxis.net/213259-konsolenanwendung-crt-pas-console-library.html)

himitsu 24. Jul 2023 09:39

AW: Konsolenanwendung - crt.pas - Console Library
 
Zitat:

Zitat von Sinspin (Beitrag 1524822)
... falls es sich um eine echte Konsolenausgabe handelt.

Welche, die alte CMD, das neue Terminal (seit Win11 nun Standard), Bei Google suchencmder oder Eine der vielen Anderen?

arcticwolf 25. Jul 2023 12:45

AW: Konsolenanwendung - crt.pas - Console Library
 
Zitat:

Zitat von Andreas13 (Beitrag 1524817)
Hi Wolfgang,
(wie) kann man im Fenster der Konsolenanwendung zurückblättern, wenn der Inhalt überläuft?
Ich verwende Deine Bibliothek für Ausgabe der Ergebnisse umfangreicher Berechnungen, die mehrere 100 Zeilen Kolonnen voller Zahlen liefern.
Leider sehe ich nur die letzten paar Zeilen davon. Kann man einen Scrollbar aktivieren?

Hallo Andreas,

der ursprüngliche Zweck der Library ist/war eine MsDos-Anwendung die mit TurboPascal programmiert wurde unter Windows laufen zu lassen. Eine Dos-Anwendung war, soweit ich mich erinnere, immer auf eine Bestimmte Größe fixiert, meist (80 x 25) oder auch mal (40 x 25, 80 x 43, u.s.w.). Da gab es auch keinen Scrollbalken. Insofern ist die Library primär auf feste Fenstergrößen optimiert. Das betrifft einmal die Größe des Konsolefensters (als Canvas Basis = Console.Window) für die Ausgabe und dann innerhalb dieses Konsolenfensters auf Ausgabefenster (Crt.Window).

Mir fallen spontan 2 Möglichkeiten ein, den von Dir angestrebten Zweck abzubilden:

1) ScreenBuffer vergrößern
2) Eine TStringList verwenden

Ich habe ein paar Dingen an der Library geändert/erweitert und habe das Demo11 hinzugefügt welches die beiden Möglichkeiten zeigen soll.

Zu 1) ScreenBuffer vergrößern
- Mit Console.Buffer(x,y) die Puffergröße auf die gewünschte Größe erweitern
- Für die Ausgabe sollte/muss "WriteConsole" und/oder "WritelnConsole" verwendet werden, weil die normalen Ausgaben (Write/Writeln) auf feste Fenstergrößen abgestimmt sind
- Scrollen mit Console.ReadkeyScroll

Delphi-Quellcode:
  Console.Buffer(120,1500);
  WritelnConsole('Text 1');
  ...
  WritelnConsole('Text X');
  Console.ReadkeyScroll(Key);
Zu 2) Eine TStringList verwenden

Die zweite Methode ist eleganter und verwendet eine TStringListConsole.
Den Ausgabetext einfach in die Strings schreiben und dann mit Show ein "Scroll-Fenster" erzeugen.
Das hat auch den Vorteil, dass man die Ausgabe noch anderweitig verwenden kann, zum Beispiel um die Ausgabe als Datei zu speichern (siehe Demo).

Delphi-Quellcode:
Var
  Strings : TStringListConsole;
begin
  Strings := TStringListConsole.Create;
  Strings.Add('Text 1');
  ...
  Strings.Add('Text X');
    // Optional die Größe des Scroll-Fensters hier festlegen
    // Console.Window(120,60);
  Strings.Show('Show my Strings');
  Strings.Free;

Andreas13 25. Jul 2023 21:05

AW: Konsolenanwendung - crt.pas - Console Library
 
Herzlichen Dank, Wolfgang! :thumb:
Ich werde damit experimentieren.

arcticwolf 27. Jul 2023 08:51

AW: Konsolenanwendung - crt.pas - Console Library
 
Die Idee/Anforderung von Andreas hat mich inspiriert und ich habe die Library jetzt so erweitert, dass der "Scroll-Modus" direkt aktiviert werden kann.

Delphi-Quellcode:
      Console.Window(100,50);
      Console.Buffer(180,1500);
      // Use WriteConsole for System.Write
      Console.Modes.AlternateWriteProc := awConsole;

      For Zeile := 1 To 200 Do
      Begin
        WriteLnConsole('Zeile[' + Zeile.ToString.PadLeft(3) + ']');
      End;
      Console.ReadkeyScroll(Key);

      Console.Window(80,25);
      // Set back to Default-Value
      // Use CrtWrite for System.Write
      Console.Modes.AlternateWriteProc := awCrt;
Demo11 habe ich entsprechend angepasst. Dort werden noch weitere Möglichkeiten gezeigt.

Andreas13 27. Jul 2023 21:29

AW: Konsolenanwendung - crt.pas - Console Library
 
:thumb: :thumb: :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 Uhr.
Seite 5 von 5   « Erste     345   

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