![]() |
Variablen zusammensetzten
Hallo
Ich wollte eine Funktion machen, in der eine Zahl mit dem OpenDialog zusammengesetzt wird. Das heisst, ich habe zb 3 OpenDialogs, und 3 Zahlen, nun will ich nicht mit if Zahl = 1 then OpenDialog1.Execute schaffen, sondern mit if Zahl = Zahl1 then OpenDialog + Zahl1+.Execute arbeiten. Nur geht das nicht -> if Zahl = Zahl1 then OpenDialog + Zahl1+.Execute Kann mir jemand helfen? |
Re: Variablen zusammensetzten
Hi xstream,
such mal nach [dp]"FindComponent"[/dp]. Damit kannst du dein Problem schnell und einfach lösen. Greetz alcaeus [add]Auch die Online-Hilfe kennt FindComponent, sollte schnellere Ergebnisse erzielen :zwinker:[/add] |
Re: Variablen zusammensetzten
bei mir funktioniert das aber nicht! es kommt immer die meldung:
Zitat:
|
Re: Variablen zusammensetzten
Also bei mir gibts die Funktion FindComponent...
|
Re: Variablen zusammensetzten
Hi xstream,
zeige doch bitte mal den Aufruf von FindComponent (die ganze Prozedur in welcher aufgerufen wird). Vielleicht ist ja nur ein kleiner Fehler drin. Greetz alcaeus |
Re: Variablen zusammensetzten
Code:
Gerade nach FindComponent ist der Strich, der blinkt, zum schreiben :) und die linie ist rot...
a:=FindComponent('OpenDialog' + IntToStr((line+StrToInt(datei.Strings[1]))));
offen.LoadFromFile(TOpenDialog(a).FileName); |
Re: Variablen zusammensetzten
Steht der Code in einer Routine eines TComponent-Nachfolgers? FindComponent ist lt. oh eine Funktion von TComponent ;)
edit: Du kannst alternativ auch mit nem Array Of TOpenDialog arbeiten und über den Index darauf zugreifen :zwinker: Gruß Stephan |
Re: Variablen zusammensetzten
Zitat:
Zitat:
alcaeus |
Re: Variablen zusammensetzten
ich hab noch nicht mehr gemacht...
das ist alles, was in der prozedur steht... |
Re: Variablen zusammensetzten
Hi xstream,
lass bitte mal den Prozedurheader sehn. Ich denke mir, dass du die Funktion aus einer Prozedur aufrufst, die z.B. nicht zu deinem Form gehört. Greetz alcaeus |
Re: Variablen zusammensetzten
es ist eigentlich eine funktion... :oops:
Code:
function Schritt3(Schritt: integer): String;
var Nr: Integer; Bis: Integer; line: Integer; speicher: TStringList; offen: TStringList; a: String; begin |
Re: Variablen zusammensetzten
Das kann nicht funktionieren, weil FindComponent wie gesagt eine Funktion von TComponent ist, d.h. sie muss entweder in "procedure TFormX.xyz();" stehen oder über "FormX.FindComponent()" aufgerufen werden :)
Gruß Stephan :dance: |
Re: Variablen zusammensetzten
Hi xstream,
genau was ich mir gedacht habe. Falls die Funktion in der Unit eines Formulars ist, musst du den Header in den private-Teil der Formklasse schreiben:
Delphi-Quellcode:
und bei der Implementierung anstatt dem jetzigen Kopf
TForm1 = class(TForm)
.. private function Schritt3(Schritt: integer): String; ..
Delphi-Quellcode:
schreiben. Anschließend sollte es gehn.
function TForm1.Schritt3(Schritt: integer): String;
greetz alcaeus |
Re: Variablen zusammensetzten
also
vielen dank für die antworten, aber es funktioniert einfach nicht... TForm1 = class(TForm) ist bei mir schon im header, nur anstatt eine eins steht eine 2, weil es das 2 form ist. private function Schritt3(Schritt: integer): String; bei dem schlägt der debugger aus, der sagt nämlich: Deklaration erwartet, aber Bezeichner 'private' gefunden und wenn ich function TForm1.Schritt3(Schritt: integer): String; benutze, gibt es ganz viele fehlermeldungen, eine zb die Funktion braucht eine Methode usw ich bin ein noob ok aber ich kann mit deinen tipps einfach nichts anfangen... |
Re: Variablen zusammensetzten
Hi xstream,
die Klassendeklaration sollte anschließend ungefähr so aussehn:
Delphi-Quellcode:
Dann hättest du den ersten Schritt schon.
type
TForm2 = class(TForm) //Hier steht irgendwas private { Private declarations } function Schritt3(Schritt: integer): String; //Hier muss die Funktion rein public { Public declarations } //Hier steht vielleicht noch irgendwas end; Zum zweiten Teil. Deine Funktion sieht zur Zeit so aus:
Delphi-Quellcode:
Die erste Zeile der Funktion änderst du um in
function Schritt3(Schritt: integer): String;
var Nr: Integer; Bis: Integer; line: Integer; speicher: TStringList; offen: TStringList; a: String; begin //Hier steht vielleicht irgendwas a:=FindComponent('OpenDialog' + IntToStr((line+StrToInt(datei.Strings[1])))); offen.LoadFromFile(TOpenDialog(a).FileName); //Hier steht vielleicht auch irgendwas end;
Delphi-Quellcode:
Anschließend sollte es funktionieren. Und falls der Compiler einen Fehler meldet, bitte sage uns wo im Code der Fehler auftritt und welcher es ist.
function TForm2.Schritt3(Schritt: integer): String;
Greetz alcaeus |
Re: Variablen zusammensetzten
Ich will ja niemanden verwirren, aber in schritt3 statt "FindComponent(...)" einfach "Form2.FindComponent(...)" zu schreiben hilft auch. Wobei die Lösung von alcaeus schon besser is *zugeb* :D
Gruß Stephan |
Re: Variablen zusammensetzten
GUUUUUUUUUUUT nun geht es, ausser das der debugger mir nun meldet, das Inkompatible Typen: String und TComponent besteht... :pale:
|
Re: Variablen zusammensetzten
Hi xstream,
a darf nicht als String deklariert werden, sondern als TComponent. Du erhälst nicht den Namen, sondern den Zeiger aufs gefundene Objekt. Weiters solltest du überprüfen, ob der ObenDialog überhaupt gefunden wurde:
Delphi-Quellcode:
Greetz
function Schritt3(Schritt: integer): String;
var //... a: TComponent; begin //... a := nil; a := FindComponent('OpenDialog' + IntToStr((line+StrToInt(datei.Strings[1])))); if a <> nil then offen.LoadFromFile(TOpenDialog(a).FileName) else ShowMessage('Fehler!'); //Hier steht vielleicht auch irgendwas end; alcaeus |
Re: Variablen zusammensetzten
ok vielenvielenvielen dank!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 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