Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variablen zusammensetzten (https://www.delphipraxis.net/31149-variablen-zusammensetzten.html)

xstream 5. Okt 2004 08:09


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?

alcaeus 5. Okt 2004 08:10

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]

xstream 6. Okt 2004 12:27

Re: Variablen zusammensetzten
 
bei mir funktioniert das aber nicht! es kommt immer die meldung:

Zitat:

[Fehler] wizard.pas(267): Undefinierter Bezeichner: 'FindComponent'

Ultimator 6. Okt 2004 12:29

Re: Variablen zusammensetzten
 
Also bei mir gibts die Funktion FindComponent...

alcaeus 6. Okt 2004 12:35

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

xstream 6. Okt 2004 12:54

Re: Variablen zusammensetzten
 
Code:
a:=FindComponent('OpenDialog' + IntToStr((line+StrToInt(datei.Strings[1]))));
offen.LoadFromFile(TOpenDialog(a).FileName);
Gerade nach FindComponent ist der Strich, der blinkt, zum schreiben :) und die linie ist rot...

Steve 6. Okt 2004 13:01

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

alcaeus 6. Okt 2004 13:06

Re: Variablen zusammensetzten
 
Zitat:

Zitat von Steve
Steht der Code in einer Routine eines TComponent-Nachfolgers

Genau deswegen hab ich auch das gesagt:
Zitat:

Zitat von alcaeus
(die ganze Prozedur in welcher aufgerufen wird).

Greetz
alcaeus

xstream 6. Okt 2004 14:03

Re: Variablen zusammensetzten
 
ich hab noch nicht mehr gemacht...

das ist alles, was in der prozedur steht...

alcaeus 6. Okt 2004 15:08

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

xstream 6. Okt 2004 15:50

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

Steve 6. Okt 2004 15:52

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:

alcaeus 6. Okt 2004 15:53

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:
TForm1 = class(TForm)
..
private
  function Schritt3(Schritt: integer): String;
..
und bei der Implementierung anstatt dem jetzigen Kopf
Delphi-Quellcode:
function TForm1.Schritt3(Schritt: integer): String;
schreiben. Anschließend sollte es gehn.

greetz
alcaeus

xstream 6. Okt 2004 16:15

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

alcaeus 6. Okt 2004 16:18

Re: Variablen zusammensetzten
 
Hi xstream,

die Klassendeklaration sollte anschließend ungefähr so aussehn:
Delphi-Quellcode:
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;
Dann hättest du den ersten Schritt schon.
Zum zweiten Teil. Deine Funktion sieht zur Zeit so aus:
Delphi-Quellcode:
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;
Die erste Zeile der Funktion änderst du um in
Delphi-Quellcode:
function TForm2.Schritt3(Schritt: integer): String;
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.

Greetz
alcaeus

Steve 6. Okt 2004 16:22

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

xstream 6. Okt 2004 16:50

Re: Variablen zusammensetzten
 
GUUUUUUUUUUUT nun geht es, ausser das der debugger mir nun meldet, das Inkompatible Typen: String und TComponent besteht... :pale:

alcaeus 6. Okt 2004 17:00

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:
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;
Greetz
alcaeus

xstream 6. Okt 2004 17:25

Re: Variablen zusammensetzten
 
ok vielenvielenvielen dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.

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