![]() |
Konsolenanwendung: Leerzeichen minus String rechnen.
Hi,
ich habe folgende Tabelle "gestaltet":
Delphi-Quellcode:
Procedure P_Stunden_ausgeben;
var i: Integer; begin //1. Zeile write(' ');write(#218);for i:=1 to 50 do write(#196);writeln(#191); //2. Zeile write(' ');write(#179);write(' STUNDENPLAN:');for i:=1 to 37 do write(' '); writeln(#179); //3. Zeile write(' ');write(#179);for i:=1 to 14 do write(' ');write(#218); for i:=1 to 10 do write(#196);write(#194);for i:=1 to 10 do write(#196); write(#194);for i:=1 to 10 do write(#196);write(#194); for i:=1 to 10 do write(#196);write(#194);for i:=1 to 10 do write(#196); writeln(#191); //4. Zeile write(' ');write(#179);for i:=1 to 14 do write(' ');write(#179); write('Montag');write(' ');write(#179);write('Dienstag'); write(' ');write(#179);write('Mittwoch');write(' ');write(#179); write('Donnerstag');write('');write(#179);write('Freitag'); write(' ');writeln(#179); //5. Zeile write(' ');write(#179);for i:=1 to 14 do write(' ');write(#195); for i := 1 to 54 do write(#220);writeln(#180); //6. Zeile write(' ');write(#179);for i:=1 to 14 do write(' ');write(#195); for i:=1 to 10 do write(#196);write(#197);for i:=1 to 10 do write(#196); write(#197);for i:=1 to 10 do write(#196);write(#197); for i:=1 to 10 do write(#196);write(#197);for i:=1 to 10 do write(#196); writeln(#180); //7. Zeile write(' ');write(#179);write(' 1. Stunde:');write(' ');write(#179); write(Tag[1,1]);for i:=0 to [color=#ff0000]Anzahl_freier_Zeichen[/color]write(#179); readln; Das Problem ist, dass sich die Tabelle verzieht, sobald ein Feldinhalt bei zum Beispiel bei Montag(1.Stunde) größer als 10 Zeichen ist. Ideal wäre, wenn ich den "Freiraum" berechen könnte. So das ich dann wo Anzahl_freier_Zeichen eine Variable hätte die immer die noch von 10 verbleibenden Zeichen angibt. Das habe ich auch schon mit folgender Prozedur probiert:
Delphi-Quellcode:
procedure P_Spalte(Text:String);
var i:Byte; begin if Tag[1,1]=('') then for i:=1 to 10 do write(' ') else for i:=1 to (10-Anzleer) do write(' '); end; |
Re: Konsolenanwendung: Leerzeichen minus String rechnen.
Zitat:
Ich habe Deinen Code nicht ausgeführt, aber ich denke mir, dass die vielen #xxx die Ecken und Linien einer Tabelle bilden. Es würde da Sinn machen, sich die einzelnen Elemente vorher als Konstakte zu definieren
Delphi-Quellcode:
Dann solltest Du einen Rahmen auch mit der einfachen Anweisung
const
RAHMEN_OL = #123; RAHMEN_O = #124; RAHMEN_OR = #125; RAHMEN_UL = #126; RAHMEN_U = #127; RAHMEN_UR = #128;
Delphi-Quellcode:
ausgeben lassen können.
write(RAHMEN_OL + StringOfChar(50, RAHMEN_O) + RAHMEN_OR);
... (alles ungetestet, bitte selbst die richtigen Werte eintragen. Danke) Gruß, SirTwist |
Re: Konsolenanwendung: Leerzeichen minus String rechnen.
Hi,
danke für den Tipp, aber wir sollen das so machen :( Primär geht es mir aber ehr um das Problem, wie ich folgendes umsetzen kann: Es gibt Platz für 10 Zeichen, wenn 10 Zeichen verwendet werden, mache nichts, sonst schreibe genau so viele Zeichen, sodass du den Platz für 10 Zeichen ausnutzt. Könnte man vielleicht:
Delphi-Quellcode:
procedure P_Spalte(Text:String);
var i:Byte; begin for i:=0 to (10-(length(Eingabe)) do begin write(' ');end; für mein Problem verwenden? //Edit Ich habe es hinbekommen mit:
Delphi-Quellcode:
procedure P_Spalte(Text:String);
var i:Byte; begin for i:=0 to (9-(length(Eingabe)) do begin write(' ');end; |
Re: Konsolenanwendung: Leerzeichen minus String rechnen.
Zitat:
Guck Dir mal Format('%-10.10s', [string]) an. Gruß, SirTwist |
Re: Konsolenanwendung: Leerzeichen minus String rechnen.
Zitat:
Delphi-Quellcode:
Grüße
const
MaxSpalten = 10; ... while length(Eingabe) < MaxSpalten do Eingabe := Eingabe + ' '; Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 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