![]() |
etwas an zeilenende in der Console schreiben
Heyho!
wie geht das denn nun? ich möchte für meine consolen ausgabe was an das ende der jeweiligen zeile schreiben, weis ja aber nicht, wie groß die console ist. zur verdeutlichung, hier nen screenshot mit wget als beispiel unter linux! ![]() und da wget, dass ja auch unter windows so macht muss das ja irgendwie gehen! :) nur die frage ist, wie danke schonmal für eure hilfe! |
Re: etwas an zeilenende in der Console schreiben
Ich habe von Olli eine Include-Datei mit den entsprechenden Konsolen-Funktionen:
![]() |
Re: etwas an zeilenende in der Console schreiben
ich seh ehrlichgesagt nicht so richtig in dem source durch (meine kenntnisse sind noch stark begrenzt!)
also ich binde das file ja jetzt ganz normal in ne neue unit (cmd_functions zb) ein und setz die mit in meine uses clauses rein. das is mir klar soweit, aber wie genau bekomm ich mit dadrüber die breite raus, um zu entscheiden zu welchem xwert ich mit gotoxy gehen muss? edit: ich stell grad fest, dass man das auch nicht als normale unit einfach reinkopieren kann! :| |
Re: etwas an zeilenende in der Console schreiben
Delphi-Quellcode:
;-)
{$INCLUDE ConTools.inc}
|
Re: etwas an zeilenende in der Console schreiben
ah danke sehr ;)
das schreiben funktioniert jetzt an die stelle wo es hinsoll, aber wie gesagt hab ich noch keine ahnung wie ich die maximale anzahl des consolenfenster rausbekomme! ich könnte einfach nen zeichen immer durchlaufen lassen, und mir über die whereY immer überprüfen ob der eine zeile nach unten gerutscht ist, aber das erscheint mir irgendwie unnötig aufwendig! |
Re: etwas an zeilenende in der Console schreiben
Zitat:
Ich bin nicht sicher, ob das Includefile gegenüber einer Unit überhaupt einen Vorteil in Bezug auf die Exe-Größe bringt. Sind die kleinen Ersparnisse bei den Linker-Symbolen die Nachteile (nur einmal benutzbar, kein sauberes Interface) wirklich wert? |
Re: etwas an zeilenende in der Console schreiben
Der Umgang mit dieser Includedatei ist sehr einfach.
Siehe Beispiel:
Delphi-Quellcode:
program Dingsda;
{$APPTYPE CONSOLE} uses Windows, Messages; var MyText: String; i: Byte; {$I 'C:\Dokumente und Einstellungen\Admin-User\Desktop\ConTools.inc'} begin // Textfarbe Weiss auf Schwarz setzen //(Max Wert 255 ab 128 Blinkende Zeichen im 16 Bit DOS-Mode) SetTextAttribute(15); //Cursor setzen GotoXY(10, 10); // Text Ausgeben ohne neue Zeile zu setzen: Write('Bitte Text eingeben: '); // Textfarbe auf def. Wert setzen SetTextAttribute(7); //auf Texteingabe warten/lesen GotoXY(10, 11); read(MyText); // Textausgabe 5 x for i := 0 to 4 do begin GotoXY(10, 14); ClrEol; //Clear End of Line MyText := MyText + Chr(65 + i); // :-) Write(i:4,' -> ', MyText); Sleep(50); end; GotoXY(1, 24); // Konsole Beenden. ConsoleEnd; end. Zitat:
|
Re: etwas an zeilenende in der Console schreiben
hey danke, dein beispiel hat mir paar nette anregungen gegeben!
aber ich hab noch nicht ganz raus, wie ich das ende von einer zeile nun bestimmen kann (also wie breit die zeile ist) edit: gibts eigentlich irgendwo ne tabelle wo die ganzen farben selbst aufgelistet sind? |
Re: etwas an zeilenende in der Console schreiben
Das Ganze geht auch ohne zusätzliche, eingebundene Funktionen. :)
- edit - Die Konsole besteht aus 80x25 Zeichen unter Windows. Man kann also mit einer Breite von 80 rechnen. kurzes Bsp. (QnD!):
Delphi-Quellcode:
program ProgressApp;
{$APPTYPE CONSOLE} uses SysUtils; const SlashArray: array[0..3] of Char = ('-', '\', '|', '/'); var i: Integer; sOut: String; begin Writeln('********************************************************************************'); for i := 0 to 100 do begin // durch das #13 wird bei jedem Schreiben erst an die erste Stelle der Zeile gesprungen und // dann die komplette Zeile neugeschrieben sOut := Format(#13 + '%s [%%.%ds%%.%ds] %d%%%%', [SlashArray[i mod 4], i div 2, 50 - (i div 2), i]); sOut := Format( sOut, ['********************************************************************************', ' '] ); Write(sOut); Sleep(50); end; Write(Format(#13 + '%80s', [' '])); Write(Format(#13 + 'Complete! (%s)', ['filename.ext'])); Writeln(#13#10#13#10); Writeln('********************************************************************************'); Readln; end. |
Re: etwas an zeilenende in der Console schreiben
naja, aber ich zb habe meine console halt breiter als die 80 zeichen. (kann man ja frei einstellen)
deswegen möchte ich das möglichst dynamisch hinbiegen! weil das hier sieht zb doof aus! ![]() |
Re: etwas an zeilenende in der Console schreiben
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, die gibt es. Im Grunde setzen sich die Farben aus Vorder- und Hintergrundfarben
der Windowsstandard Farbpalette zusammen. Im Anhang findest du eine Eigenbaumsdosfarbtabelle für Win32. ;) Zitat:
Delphi-Quellcode:
len := length(MyText);[delphi]
len := length('123456');
// ... var MyText: String; len: Integer; Begin... MyText := 'Das ist mein Text'; |
Re: etwas an zeilenende in der Console schreiben
danke für tabelle.
zu dem breitenproblem. ich möchte eben nicht rausfinden wie lang mein geschriebener text ist, sondern wie breit das fenster ist. wie schon gesagt wurde ist das normal 85zeichen breit. aber das kann man ja einstellen! daher wollte ich wissen obs schon was fertiges gibt um diese breite auszulesen (bei mir is die beispielsweise 130zeichen breit) |
Re: etwas an zeilenende in der Console schreiben
Achso, du meinst die Breite der Console...
Delphi-Quellcode:
uses
Windows; function ConsoleSize: TCoord; var cbi: TConsoleScreenBufferInfo; begin getConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), cbi); result := cbi.dwSize; end; begin writeln(ConsoleSize.x); writeln(ConsoleSize.y); ... |
Re: etwas an zeilenende in der Console schreiben
danke sehr :) das ist genau das was ich brauche!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz