![]() |
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:
Jopp...
//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; 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: |
Re: Delphi : String umtauschen und mit Rectangles ausgeben.
Zitat:
Desweiteren würde ich das nicht unbedingt als sehr hilfreiche Fehlerbeschreibung bezeichen. :roll: |
Re: Delphi : String umtauschen und mit Rectangles ausgeben.
Öööhm ok
Sry... :spin: Ich habs gefunden... :coder: Das Problem lag hier:
Delphi-Quellcode:
Jetzt macht ers...
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; 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 14:09 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