Einzelnen Beitrag anzeigen

At0mGuRk3

Registriert seit: 23. Nov 2004
9 Beiträge
 
#1

Delphi : String umtauschen und mit Rectangles ausgeben.

  Alt 19. Dez 2004, 13:33

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...

Na jedenfalls macht mein jetziges Proggy voll die Kagge...
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
  Mit Zitat antworten Zitat