Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String in Befehl konvertieren (https://www.delphipraxis.net/35750-string-befehl-konvertieren.html)

robroy85 11. Dez 2004 12:31


String in Befehl konvertieren
 
Hallo Leute!!!

Ich möchte gerne den Text "HALLO!" auf Umwegen in Label2 anzeigen

Der einfachste Weg wäre natürlich
Delphi-Quellcode:
label2.caption:='HALLO!';
Aber da ich den Ort ,sprich "label2", aus einem array auslese, kann ich das nicht direkt in das Programm schreiben, sondern erhalte den Ort als String. Wie kann ich nun aus dem String einen teil aus der Befehlszeile machen ? Gibt es so etwas wie StrTo"Befehl" ??

Delphi-Quellcode:
begin

ort:='label2';
text:='HALLO!';  
......
????????
end;

SirThornberry 11. Dez 2004 12:35

Re: String in Befehl konvertieren
 
so einfach ist das ganze
Delphi-Quellcode:
var LComponent: TComponent;
begin
  LComponent := FindComponent('Label2');
  if (LComponent <> nil) and (LComponent is TLabel) then
    TLable(LComponent).Caption := 'deine Caption';

Luckie 11. Dez 2004 12:35

Re: String in Befehl konvertieren
 
Delphi ist kein Interpreter, sondern ein Compiler. Wenn du ein Array of TLabel hast, warum kannst du dan nicht machen:
Delphi-Quellcode:
LabelArray[5].Caption := 'Hallo';

SirThornberry 11. Dez 2004 12:38

Re: String in Befehl konvertieren
 
Luckies Variante ist die bessere da FindComponent eben die Componente erst finden muss. Besser als ein Array fände ich allerdings da eine TList wenn man ohne TComponent arbeitet, das ist besser wenn man die anzahl der Labels später noch ändert.

robroy85 11. Dez 2004 12:42

Re: String in Befehl konvertieren
 
Leute, ich setz mich ran und werd von meinen Erfolg oder auch nicht berichten!
Wie ihr ja gesehen habt war das nur das kleine Testprog :-D

robroy85 11. Dez 2004 17:22

Re: String in Befehl konvertieren
 
Hallo Leute!
Ich hab eure Tipps alle mit meinem bessten "Können" eingebaut!
Die Namen der Edit-Felder werden in einer externen CSV-datei mit der folgenden Formatierung gespeichert:
Name1
Name2
Name3
....

Ich hab jetzt Edit-Felder statt Labels genommen...
Da Delphi bei
cfg_edit[i]:= cfg_dat.strings[i];
gemeckert hat, hab ich wie unten zu sehen ist noch ein Tedit() davor gesetzt...
Gehe ich richtig in der Annahme, dass der STring dann in einen Tedit-Wert geändert wird ??
Nun kommt mein Problemm... bei der letzten Zeile kommt es leider zum Programmabsturz, da "cfg_edit[7].text" wohl nicht dem vom mir erwarteten Wert entspricht ...
Was macht ich falsch ??

Delphi-Quellcode:
procedure TForm1.FormActivate(Sender:TObject);//beim Starten des Programms
var
cfg_dat : TStrings;
i: integer;
begin
//Auslesen der CFG-Datei
cfg_dat:=TStringList.Create;      //StringList erzeugen
cfg_dat.LoadFromFile('CFG.csv');
 for i:=0 to 8 do begin
 cfg_edit[i]:= Tedit(cfg_dat.strings[i]);

 end;
cfg_dat.Free ;
cfg_edit[7].text:='kdhkjdh'; // ----> FEHLER !

end;

Dax 11. Dez 2004 17:25

Re: String in Befehl konvertieren
 
Du willst doch einen Edit-Text verändern, aber was du tust, ist das Edit direkt verändern ;)
So sollte es funktionieren:
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender:TObject);//beim Starten des Programms
var
cfg_dat : TStrings;
i: integer;
begin
//Auslesen der CFG-Datei
cfg_dat:=TStringList.Create;      //StringList erzeugen
cfg_dat.LoadFromFile('CFG.csv');
for i:=0 to 8 do begin
cfg_edit[i].text:= cfg_dat.strings[i];

end;
cfg_dat.Free ;
cfg_edit[7].text:='kdhkjdh';

end;

robroy85 11. Dez 2004 17:49

Re: String in Befehl konvertieren
 
Nein, eigentlich möchte ich nur meinem
leeren array ( cfg_edit: array [0..8] of TEdit; )aus der Datei cfg.csv jeweils einen namen zuweisen!

Bisher siecht mein Quelltext bei Schreiben in das 2Dimensionale Array BigTemp so aus:

Delphi-Quellcode:
BigTemp[b,0] := Nachname.Text;
BigTemp[b,1] := Vorname.Text;
BigTemp[b,2] := Deutsch.Text;
BigTemp[b,3] := Englisch.Text;
BigTemp[b,4] := Mathe.Text;
BigTemp[b,5] := Franz.Text;
BigTemp[b,6] := Latein.Text;
BigTemp[b,7] := Russisch.Text;
BigTemp[b,8] := Werken.Text;
......
diese ansich schon in der Test-phase langen 8Zeilen ( es kommen später noch mehr Fächer hinzu )
wollte ich durch folgenden Eintrag verkürzen:
Delphi-Quellcode:
begin
 for i:=0 to 8 do begin
 BigTemp[b,i] := cfg_edit[i].Text;
Nur ist leider in meinen vorhergeposteten Quelltext als Beispiel Nachname nicht gleich cfg_edit[0]

:?

PS: MEIN ESSEN IS GRAD ANGEBRANNT ---Lecker :lol: :lol: :lol:


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