AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi etwas an zeilenende in der Console schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

etwas an zeilenende in der Console schreiben

Ein Thema von easteregg · begonnen am 16. Feb 2007 · letzter Beitrag vom 16. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von easteregg
easteregg

Registriert seit: 26. Mär 2005
174 Beiträge
 
#1

etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 15:20
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!

http://verfriemelt.org/delphi-praxis...de_console.jpg

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!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 15:29
Ich habe von Olli eine Include-Datei mit den entsprechenden Konsolen-Funktionen:
http://www.michael-puff.de/dirindex....orte/Assarbad/ -> ConTools.inc
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von easteregg
easteregg

Registriert seit: 26. Mär 2005
174 Beiträge
 
#3

Re: etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 15:37
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!
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 15:48
{$INCLUDE ConTools.inc}
  Mit Zitat antworten Zitat
Benutzerbild von easteregg
easteregg

Registriert seit: 26. Mär 2005
174 Beiträge
 
#5

Re: etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 15:54
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!
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 15:55
Zitat von Die Muhkuh:
{$INCLUDE ConTools.inc}
Vielleicht sollte man einfach aus dem Includefile eine normale Unit machen.
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?
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

Re: etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 16:07
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 von shmia:
Ich bin nicht sicher, ob das Includefile gegenüber einer Unit überhaupt einen Vorteil in Bezug auf die Exe-Größe bringt.
Nun ja, ein zwei Byte.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von easteregg
easteregg

Registriert seit: 26. Mär 2005
174 Beiträge
 
#8

Re: etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 16:18
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?
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#9

Re: etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 16:22
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.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Benutzerbild von easteregg
easteregg

Registriert seit: 26. Mär 2005
174 Beiträge
 
#10

Re: etwas an zeilenende in der Console schreiben

  Alt 16. Feb 2007, 16:34
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!

http://verfriemelt.org/delphi-praxis...en_problem.jpg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:49 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