![]() |
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! ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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 by Thomas Breitkreuz