Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi String Zeichen einzeln ausgeben (https://www.delphipraxis.net/173750-string-zeichen-einzeln-ausgeben.html)

Davidlocke13 15. Mär 2013 09:40

AW: String Zeichen einzeln ausgeben
 
Delphi-Quellcode:
for i:= 1 to length(EditText.text) do
oder

Delphi-Quellcode:
for i:= 0 to length(EditText.text)-1 do
kommt das nicht aufs gleiche raus ?!

DeddyH 15. Mär 2013 09:44

AW: String Zeichen einzeln ausgeben
 
Nein, Strings beginnen bei Index 1, dynamische Arrays bei Index 0.

Davidlocke13 15. Mär 2013 09:47

AW: String Zeichen einzeln ausgeben
 
Zitat:

Zitat von DeddyH (Beitrag 1207514)
Nein, Strings beginnen bei Index 1, dynamische Arrays bei Index 0.

Ok gut zu wissen ;-)
Das Ergebnis schaut aber bei mir gleich aus, ist mir aufgefallen !

DeddyH 15. Mär 2013 09:49

AW: String Zeichen einzeln ausgeben
 
Dann schalt mal die Bereichsprüfung ein. Das erste Edit im Array wird überhaupt nicht angesprochen, dafür aber eins, das außerhalb des Arrays liegt.

Davidlocke13 15. Mär 2013 10:01

AW: String Zeichen einzeln ausgeben
 
Ok ich habe es jetzt gesehen ;-)

Sir Rufo 15. Mär 2013 10:04

AW: String Zeichen einzeln ausgeben
 
Warum hört eigentlich niemand auf Bjoerk?
Delphi-Quellcode:
var
  i: Integer;
begin
  ...
  SetLength(EditArray, i); // Preisfrage: Welchen Wert hat i zu diesem Zeitpunkt?
  ...
  for i:= 1 to length(EditText.text) do
    begin
      ...
    end;
end;
Mein Vorschlag daher
Delphi-Quellcode:
procedure TForm2.BtnStartClick(Sender: TObject);
var
  i: Integer;
begin
  EditText.Visible := false;
  BtnStart.Visible := false;
  BtnClear.Visible := false;

  Wort := EditText.Text;

  SetLength( EditArray, Length( Wort ) );

  for i:= 0 to High( EditArray ) do
  begin
    EditArray[i]:= TEdit.Create(Self);
    EditArray[i].Parent := Self;
    EditArray[i].Left:= 16 + ((EditArray[i].Left + 32) * i);
    EditArray[i].Top:= 380;
    EditArray[i].Width:= 30;
    EditArray[i].Font.Name := 'Comic Sans MS';
    EditArray[i].Font.Size := 14;
    EditArray[i].MaxLength := 1;
    EditArray[i].Alignment := taCenter;

    EditArray[i].Text := Wort[i + 1];
  end;
end;

Davidlocke13 15. Mär 2013 10:06

AW: String Zeichen einzeln ausgeben
 
Zitat:

Zitat von Sir Rufo (Beitrag 1207521)
Warum hört eigentlich niemand auf Bjoerk?

War gerade dabei das auszuprobieren ;-)

Übrigens es Funktioniert wunderbar !

Danke

Sir Rufo 15. Mär 2013 10:09

AW: String Zeichen einzeln ausgeben
 
Was bezweckst du eigentlich mit dieser Zeile:
Delphi-Quellcode:
...
EditArray[i].Left:= 16 + ((EditArray[i].Left + 32) * i);
...
Nimm die aktuell linke Position des neu erzeugten Controls (wo immer die auch liegen mag) und errechne aus diesem die neue linke Position???
Du bist dir sicher, dass du damit immer ein reproduzierbares und vorhersehbares Ergebnis bekommst?

Davidlocke13 15. Mär 2013 10:12

AW: String Zeichen einzeln ausgeben
 
Die Ausrichtung der Edits und das sollte eher so ;-)

Delphi-Quellcode:
EditArray[i].Left:= 50 +(32* i);

Sir Rufo 15. Mär 2013 10:14

AW: String Zeichen einzeln ausgeben
 
Zitat:

Zitat von Davidlocke13 (Beitrag 1207525)
Die Ausrichtung der Edits und das sollte eher so ;-)

Delphi-Quellcode:
EditArray[i].Left:= 50 +(32* i);

Ok, aber dann würde ich auch eher das vorschlagen
Delphi-Quellcode:
...
EditArray[i].Width := 30;
EditArray[i].Left := 50 + ( EditArray[i].Width + 2 ) * i;
...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 Uhr.
Seite 2 von 3     12 3      

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