AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Konsolenanwendung: Leerzeichen minus String rechnen.
Thema durchsuchen
Ansicht
Themen-Optionen

Konsolenanwendung: Leerzeichen minus String rechnen.

Ein Thema von coly546 · begonnen am 7. Okt 2008 · letzter Beitrag vom 8. Okt 2008
Antwort Antwort
coly546

Registriert seit: 10. Mär 2008
35 Beiträge
 
RAD-Studio 2009 Arc
 
#1

Konsolenanwendung: Leerzeichen minus String rechnen.

  Alt 7. Okt 2008, 20:17
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;
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#2

Re: Konsolenanwendung: Leerzeichen minus String rechnen.

  Alt 7. Okt 2008, 20:33
Zitat von coly546:
Hi,
ich habe folgende Tabelle "gestaltet":
Huihuihuiui... also zu der write-Wüste: Guck Dir mal die Funktion StringOfChar() an, die liefert Dir einen String mit n-mal einem bestimmten Zeichen.

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:
const
  RAHMEN_OL = #123;
  RAHMEN_O = #124;
  RAHMEN_OR = #125;
  RAHMEN_UL = #126;
  RAHMEN_U = #127;
  RAHMEN_UR = #128;
Dann solltest Du einen Rahmen auch mit der einfachen Anweisung
Delphi-Quellcode:
write(RAHMEN_OL + StringOfChar(50, RAHMEN_O) + RAHMEN_OR);
...
ausgeben lassen können.
(alles ungetestet, bitte selbst die richtigen Werte eintragen. Danke)

Gruß,
SirTwist
  Mit Zitat antworten Zitat
coly546

Registriert seit: 10. Mär 2008
35 Beiträge
 
RAD-Studio 2009 Arc
 
#3

Re: Konsolenanwendung: Leerzeichen minus String rechnen.

  Alt 7. Okt 2008, 20:41
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;
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#4

Re: Konsolenanwendung: Leerzeichen minus String rechnen.

  Alt 7. Okt 2008, 21:02
Zitat von coly546:
Hi,
danke für den Tipp, aber wir sollen das so machen
Euer Lehrer verbietet Euch, selbständig zu denken und bessere Lösungen zu erarbeiten? Gibst Du mir mal bitte dessen Mailadresse? *harhar*

Guck Dir mal Format('%-10.10s', [string]) an.

Gruß,
SirTwist
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Konsolenanwendung: Leerzeichen minus String rechnen.

  Alt 8. Okt 2008, 08:01
Zitat von coly546:
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;
oder so:

Delphi-Quellcode:
const
  MaxSpalten = 10;
...

while length(Eingabe) < MaxSpalten do
  Eingabe := Eingabe + ' ';
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


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:35 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