Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi : String umtauschen und mit Rectangles ausgeben. (https://www.delphipraxis.net/36386-delphi-string-umtauschen-und-mit-rectangles-ausgeben.html)

At0mGuRk3 19. Dez 2004 13:33


Delphi : String umtauschen und mit Rectangles ausgeben.
 
:? :?
Hallo Leute,
ich hab ein kleines Problem.
Ich hab ein Programm, dass, wenn man einen Text eingibt, es ihn umgekehrt ausgibt
und dazu noch für jeden Buchstaben ein Rechteck anlegt.
Das Ganze sollte in etwa so aussehen:

Hauptrechteck (265x265)
(Rechteck1 + 1. Buchstabe) < Hauptrechteck
(Rechteck2 + 2. Buchstabe) < (Rechteck1 + 1. Buchstabe)
.
.
.
(Rechteckn + n. Buchstabe) < (Rechteckn-1 + n-1. Buchstabe)


Sprich:
Der 1. Buchstabe wird ganz unten in einem Rechteck ausgegeben.
Der 2. Buchstabe wird da schräg rechts drüber in einem weiteren Rechteck ausgegeben, dass das 1. umschließt.
Und so weiter, bis in etwa der n. Buchstabe im n. Rechteck in der Mitte ausgegeben wird.


Goil wäre auch, wenn der 1. Buchstabe von der Mitte aus bis hin zum n. Buchstaben ganz unten links in Rechtecken ausgegeben wird... :mrgreen:

Na jedenfalls macht mein jetziges Proggy voll die Kagge... :coder2:
Delphi-Quellcode:
//Meine String-Tausch-Funktion, FUNKTIONIERT!
function umdrehen(wort:STRING):STRING;
var dummy:CHAR;
BEGIN
  //"Wenn keine Eingabe, dann keine Ausgabe" - Abfrage
  IF length(wort) = 0 THEN umdrehen:=''
  ELSE
  BEGIN
  //Wenn eine Eingabe erfolgt ist,
  //dann schreibt er den ERSTEN Buchstaben in dummy rein
  //und löscht ihn aus dem Wort
    dummy:= wort[1]; delete(wort,1,1);
  //Nun wird die Funktion wieder aufgerufen
  //Also praktisch, bis die Wortlänge 0 ist,
  //wird in dummy immer der Wert von umdrehen + dummy davor angehängt
    umdrehen:= umdrehen(wort) + dummy;
  END;
END;



procedure TForm1.Button1Click(Sender: TObject);
var getauscht:STRING;
    i,n:INTEGER;
begin

//String wird getauscht und ausgegeben
getauscht:=edit1.text;
edit2.text:=umdrehen(getauscht);
n:=length(getauscht);

//Hier soll gezeichnet werden...
//WAS IS NUR FALSCH?
//BITTE TESTET DIES MAL ORDENTLICH DURCH
for i:=0 TO n DO
BEGIN
WITH image1.Canvas DO
BEGIN
Pen.Color:=ClBlue;
Rectangle((265 MOD 2),(265 MOD 2),Image1.Width-(i*15),Image1.Height-(i*15));
Textout(i*15,265-(i*15),getauscht[i]);

END;
END;
end;

//HIER WIRD ALLES GELÖSCHT
procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
image1.Picture:=NIL;
end;
Jopp...
Also ich hab eine Image-Komponente, 2 Editfelder und 3 Knöppe [tausche,clear,exit]

Wär cool, wenn ihr mir weiterhelfen könntet.
MfG die Gurke :P :wink:

Luckie 19. Dez 2004 13:50

Re: Delphi : String umtauschen und mit Rectangles ausgeben.
 
Zitat:

Zitat von At0mGuRk3
Na jedenfalls macht mein jetziges Proggy voll die Kagge... :coder2:

Bitte mäßige dich etwas in deiner Ausdrucksweise! :warn:

Desweiteren würde ich das nicht unbedingt als sehr hilfreiche Fehlerbeschreibung bezeichen. :roll:

At0mGuRk3 19. Dez 2004 14:15

Re: Delphi : String umtauschen und mit Rectangles ausgeben.
 
Öööhm ok
Sry... :spin:


Ich habs gefunden... :coder:


Das Problem lag hier:
Delphi-Quellcode:
for i:=0 TO n DO
BEGIN
WITH image1.Canvas DO
BEGIN
Pen.Color:=ClBlue;
rectangle(i*15,i*15,265-i*15,265-i*15);
Textout(0+(i*15),265-(i*15),getauscht[i]);

END;
END;
Jetzt macht ers...
Zumindest bis zu einer bestimmten Stringlänge :)

Trotzdem danke...

(Hätte vielleicht erst mal selbst weitermachen müssen, statt :wiejetzt: zu fragen...)

MfG, die Gurke


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 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