AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Ausgabe (Text) automatisch unterstreichen lassen?
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgabe (Text) automatisch unterstreichen lassen?

Ein Thema von coly546 · begonnen am 2. Jun 2008 · letzter Beitrag vom 4. Jun 2008
Antwort Antwort
Seite 2 von 3     12 3      
coly546

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

Ein weiteres kleines Problem

  Alt 4. Jun 2008, 08:06
Hi,
ich möchte meine automatische Text-Unterstreichung noch etwas verfeinern.
Und zwar sollte man auch den "Freiraum" vor der Überschrift frei bestimmen können.

Dazu habe ich die Prozedur wie folgt erweitert:

Delphi-Quellcode:
program textautomatischunterstreichen2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

//001----Procedure-------Anfang--------------
procedure MyWriteLn(leer,text:string);
var i:byte;
begin
  write(leer); writeln(text);
  for i:=1 to length(leer) do
    write(#32);
  for i:=1 to length(text) do
    write(#196);
  writeln;
end;
//001----Procedure--------Ende----------------

//-------Hauptprogramm----Anfang--------------
begin
MyWriteLn(' ','DasisteineUeberschrift');
readln;
end.
//-------Hauptprogramm----Ende----------------

So weit so gut, allerdings möchte ich anstelle von den in der Zeile 23:
MyWriteLn(' ','DasisteineUeberschrift'); verwendeten Leerzeichen via Tastatur, eine "Zählschleife" verwenden.
Als ich nun die besagte Zeile 23 gegen diese:
MyWriteLn(for i:=1 to 20 do write(#32),'DasisteineUeberschrift'); mit "Zählschleife" ersetzte, wollte er das Programm nicht mehr compilieren.



Jetzt stellt sich für mich die Frage, was ich machen kann damit es auch mit einer "Zählschleife" funktioniert.



freundliche Grüße
coly546
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#12

Re: Ausgabe (Text) automatisch unterstreichen lassen?

  Alt 4. Jun 2008, 08:13
Moin, Moin,
die Schleife muss in die Prozedur, du übergibst nur die Schleifenobergrenze als Integer (oder Byte).
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#13

Re: Ausgabe (Text) automatisch unterstreichen lassen?

  Alt 4. Jun 2008, 08:23
Wie wär's damit:

Delphi-Quellcode:
Writeln(StringOfChar(#32, i), myString);
Writeln(StringOfChar(#32, i), StringOfChar('_', Length(myString));
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#14

Re: Ausgabe (Text) automatisch unterstreichen lassen?

  Alt 4. Jun 2008, 08:30
Schön, damit ist's einfacher
- ich gehe aber davon aus, dass es coly546 primär um das "Selberbauen" geht.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#15

Re: Ausgabe (Text) automatisch unterstreichen lassen?

  Alt 4. Jun 2008, 08:53
Ja, ähm, glaub ich ja auch. Ein anderer Vorschlag: Bau deine MyWriteln-Function doch so um, dass du ihr einfach nur die Länge des Leerstrings an Stelle des Strings selbst übergibst.

[Edit] Mit Leerstring meine ich natürlich nicht '', sondern einen String aus Leerzeichen [/Edit]
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
coly546

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

Re: Ausgabe (Text) automatisch unterstreichen lassen?

  Alt 4. Jun 2008, 09:25
Zitat von taaktaak:
Schön, damit ist's einfacher
- ich gehe aber davon aus, dass es coly546 primär um das "Selberbauen" geht.
Richtig, ich als Anfänger möchte mich da erstmal mit einer "ausführlicheren" Schreibweise,
die ich im Moment auch verstehe "durchfummeln". Trotzdem danke tomsel.

Wenn ich die Schleife in die Prozedur mache, befindet sich der Strich aber am linken Bildrand.

Delphi-Quellcode:
//001----Procedure-------Anfang--------------
procedure MyWriteLn(leer,text:string);
var i:byte;
begin
  for i:=1 to 20 do write(#32); writeln(text);
  for i:=1 to length(leer) do
    write(#32);
  for i:=1 to length(text) do
    write(#196);
  writeln;
end;
//001----Procedure--------Ende----------------

//-------Hauptprogramm----Anfang--------------
begin
MyWriteLn('','DasisteineUeberschrift');
readln;
end.
//-------Hauptprogramm----Ende----------------

Ich müsste das glaube so machen, dass er nochmal die selbe Anzahl für die Leerzeichen wie oben angegeben, für die Anzahl der Leerzeichen verwendet für den Bereich vor den Strichen (#196).


Dann müsste es ja so aussehen:
Delphi-Quellcode:
//001----Procedure-------Anfang--------------
procedure MyWriteLn(leer,text:string);
var i:byte;
begin
  for i:=1 to 20 do write(#32); writeln(text);

  for i:=1 to length(text) do
    write(#196);
  for i:=1 to length(leer) do
    write(#32);
  writeln;

end;
//001----Procedure--------Ende----------------

//-------Hauptprogramm----Anfang--------------
begin
MyWriteLn('','DasisteineUeberschrift');
readln;
end.
//-------Hauptprogramm----Ende----------------

Nur irgendwie geht das trotzdem nicht.


Zitat:
Ja, ähm, glaub ich ja auch. Ein anderer Vorschlag: Bau deine MyWriteln-Function doch so um, dass du ihr einfach nur die Länge des Leerstrings an Stelle des Strings selbst übergibst.

[Edit] Mit Leerstring meine ich natürlich nicht '', sondern einen String aus Leerzeichen Zwinkern [/Edit]
hmmm...ist nur die Frage wie ich das umsetzen soll
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#17

Re: Ausgabe (Text) automatisch unterstreichen lassen?

  Alt 4. Jun 2008, 09:32
Delphi-Quellcode:
 //001----Procedure-------Anfang--------------
procedure MyWriteLn(leer,text:string);
var i:byte;
begin
  for i:=1 to 20 do write(#32); writeln(text); // hier schreibst du 20 Leerzeichen
  for i:=1 to length(leer) do // hier verwendest du statt 20 die Länge von leer
    write(#32);
  for i:=1 to length(text) do
    write(#196);
  writeln;
end;
//001----Procedure--------Ende----------------

//-------Hauptprogramm----Anfang--------------
begin
MyWriteLn('','DasisteineUeberschrift'); // als leer übergibst du hier einen String der Länge 0
readln;
end.
//-------Hauptprogramm----Ende----------------
Siehe Kommentare oben, was fällt dir da auf?
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#18

Re: Ausgabe (Text) automatisch unterstreichen lassen?

  Alt 4. Jun 2008, 09:36
Nun, du bist der Lösung ja schon sehr nah! Du musst die Unterstreichung genau so beginnen wie die Textausgabe. Also: Zuerst Leerzeichen, dann Text, noch 'mal Leerzeichen, dann Unterstriche. Die Zahl der Leerzeichen übergibst du der Prozedur, also in etwa so

Delphi-Quellcode:
procedure MyWriteln(AnzLeerzeichen:Byte;Text:String);
var i : Byte;
begin
  for i:=1 to AnzLeerzeichen do write(' '); writeln(Text);
  for i:=1 to AnzLeerzeichen do write(' ');
  for i:=1 to length(Text) do write('-');
end;
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#19

Re: Ausgabe (Text) automatisch unterstreichen lassen?

  Alt 4. Jun 2008, 09:38
Musst du alles ausplaudern? Er wollte doch selber denken.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#20

Re: Ausgabe (Text) automatisch unterstreichen lassen?

  Alt 4. Jun 2008, 09:46
Na, manchmal ist ein kleiner Schubs auch nicht schlecht, dann ist der Kopf für die nächste Herausforderung frei. Wenn man zu lange an einer Stelle herumdoktert ist das auch nicht motivierend. Schwer einzuschätzen, wann so ein Zeitpunkt erreicht ist. Grundsätzlich gebe ich dir Recht!
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 20:40 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