Identifier not found "OpenDialog1"
Identifier not found "OpenDialog1"
unit1.pas(31,7) Error: Identifier not found "OpenDialog1"
Lazarus 4.2 auf LinuxMint 21.1
Das TOpenDialog1 - Symbol habe ich auf Form1 gezogen und von dort lässt sich der Dialog anstandslos ausprobieren. Sobald ich mit dem grünen Pfeil das Programm starten will, kommt die Fehlermeldung.
Was habe ich falsch gemacht?
-
- Beiträge: 633
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Identifier not found "OpenDialog1"
Hallo,
bei mir funktionert es ohne Probleme (Linux Mint+Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-gtk2). Teste mal das beigefügte Projekt.
Viele Grüße
Bernd
bei mir funktionert es ohne Probleme (Linux Mint+Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-gtk2). Teste mal das beigefügte Projekt.
Viele Grüße
Bernd
- Dateianhänge
-
project1.zip
- (139.02 KiB) 103-mal heruntergeladen
Re: Identifier not found "OpenDialog1"
Schon mal "Start" > "Neu kompilieren" oder gar "Start" > "Aufräumen und kompilieren" probiert?
Re: Identifier not found "OpenDialog1"
Ich scheine etwas nicht richtig gesendet zu haben denn bei wennerer (übrigens danke für Deine Mühe!) fehlt der offenbar schwierige Teil in der kleinen Beispiel-Souce:
Nach
implementation
{$R *.lfm}
// folgt noch:
var filename : string[30];
begin
if OpenDialog1.Execute then
begin
filename := OpenDialog1.Filename;
ShowMessage(filename);
end;
end.
...und dann streikt die IDE mit der Fehlermeldung ... Error: Identifier not found "OpenDialog1"
übrigens nützt es nichts neu zu kompilieren bzw. aufräumen und neukompilieren zu wählen .... was mache ich falsch?
Nach
implementation
{$R *.lfm}
// folgt noch:
var filename : string[30];
begin
if OpenDialog1.Execute then
begin
filename := OpenDialog1.Filename;
ShowMessage(filename);
end;
end.
...und dann streikt die IDE mit der Fehlermeldung ... Error: Identifier not found "OpenDialog1"
übrigens nützt es nichts neu zu kompilieren bzw. aufräumen und neukompilieren zu wählen .... was mache ich falsch?
Re: Identifier not found "OpenDialog1"
Schick mal den ganzen Code (.pas, .lfm, .lpr).
Dein Schnippsel kann nicht funktionieren (end; end.).
Dein Schnippsel kann nicht funktionieren (end; end.).
- h-elsner
- Lazarusforum e. V.
- Beiträge: 287
- Registriert: Di 24. Jul 2012, 15:42
- OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 4.3, FPC3.2.3
- CPU-Target: X86-64; arm 32bit
- Wohnort: Illertissen
- Kontaktdaten:
Re: Identifier not found "OpenDialog1"
30 Zeichen beim Dateinamen scheint mir etwas gewagte, denn der .FileName enthält auch den Pfadnamen. Nur so nebenbei...
OpenDialog1 wird so nicht erkannte, denn es gehört zu TForm1
Dies würde dann gehen.
OpenDialog1 wird so nicht erkannte, denn es gehört zu TForm1
Code: Alles auswählen
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.btnTestClick(Sender: TObject);
begin
if Opendialog1.Execute then begin
Caption:=OpenDial
end;
end;
end.
Re: Identifier not found "OpenDialog1"
Jau, Dein Vorschlag geht tatsächlich (h-elsner). Bleibt mir allerdings die Frage: im Objektinspektor wird ja OpenDialog1 wie BitBtn1 zu Form1 gehörig gelistet, aber BitBtn1 wird als Teil von Form1 erkannt und OpenDialog1, dessen Icon auf Form1 direkt daneben steht, wird nicht erkannt. Ich kann das so lernen, aber gibt es dafür eine nachvollziehbare Begründung?Mir scheint das unlogisch.... Trotzdem vielen Dank für die kompetente Hilfe!
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1668
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Identifier not found "OpenDialog1"
Ich vermute auch, dass der Zugriff auf Opendialog1 ausserhalb der Form geschieht.
Code: Alles auswählen
type
TForm1 = class ( TForm )
Bitbtn1 : TBitBtn;
Opendialog1 : TOpenDialog;
procedure BitBtn1Click(Sender : TObject)
end;
implementation
procedure Test1;
begin
if OpenDialog1.Execute then // Fehler, da Test1 keine Methode von TForm1 ist.
...
end;
procedure TForm1.BitBtn1Click(Sender : TObject);
begin
Test1;
if OpenDialog1.Execute then // Geht, da BitBtn1Click eine Methode von TForm1 ist.
...
end;