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 5 von 5   « Erste     345   
Benutzerbild von himitsu
himitsu

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

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 24. Jul 2023, 10:39
... 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?
$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
 
#42

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 25. Jul 2023, 13:45
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;
Wolfgang
coding is an art - code for people not for machines
  Mit Zitat antworten Zitat
Andreas13

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

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 25. Jul 2023, 22:05
Herzlichen Dank, Wolfgang!
Ich werde damit experimentieren.
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
 
#44

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 27. Jul 2023, 09:51
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.
Wolfgang
coding is an art - code for people not for machines
  Mit Zitat antworten Zitat
Andreas13

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

AW: Konsolenanwendung - crt.pas - Console Library

  Alt 27. Jul 2023, 22:29
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
Antwort Antwort
Seite 5 von 5   « Erste     345   


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 10:46 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