[gelöst]Indy, "Identifier not found" error

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

[gelöst]Indy, "Identifier not found" error

Beitrag von Dragon »

Ich sehe zurzeit den Wald vor Lauter Bäumen nicht mehr ich kriege immer ein "Identifier not found" error bei allen befehlen also username,nickname,... . Weiß jemand zufällig wo der fehlerliegt. Indy ist unter den abhängigkeiten vorhanden also kanns daran eig nicht liegen

Code: Alles auswählen

program Project1;
 
{$mode objfpc}{$H+}
 
uses {$IFDEF UNIX} {$IFDEF UseCThreads}
  cthreads, {$ENDIF} {$ENDIF}
  Classes,
  SysUtils,
  IdIRC;
 
{ you can add units after this }
var
  a: string;
begin
  ReadLn(a);
  if a = 'Connect' then
  begin
    begin
      IdIRC.username := 'Bot';           
      IdIRC.nickname := 'Bot';           
      IdIRC.Host := '127.0.0.1';            
      IdIRC.Port := 6667;                     
      try                                  
        IdIRC.Connect();                     
        IdIRC.Join('#test');
      except                                
        ShowMessage('Fehler beim Verbinden!');
      end;
    end;
  end;
end.
Zuletzt geändert von Dragon am Sa 23. Jan 2016, 22:05, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10876
Registriert: Mo 11. Sep 2006, 19:01

Re: Indy, "Identifier not found" error

Beitrag von theo »

Du verwendest den Unit Namen, als wäre er eine Instanz einer Klasse.
Denk nochmal nach, da fehlt irgendwo etwas wie MyIdIRC=TIdIRC.Create...
(obwohl ich diese Unit nicht kenne).

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Indy, "Identifier not found" error

Beitrag von Dragon »

Die Unit "idirc" ist teil des Packages indy, welches ich in den Abhängigkeiten hinzugefügt habe unter den benötigten packages.

trotzdem schonmal danke.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Indy, "Identifier not found" error

Beitrag von compmgmt »

Dragon hat geschrieben:Die Unit "idirc" ist teil des Packages indy, welches ich in den Abhängigkeiten hinzugefügt habe unter den benötigten packages.

trotzdem schonmal danke.
Es geht darum, dass IdIRC eine Unit und kein Objekt ist. Ich habe IdIRC zwar noch nie benutzt, aber das müsste ungefähr so aussehen:

Code: Alles auswählen

program Project1;
 
{$mode objfpc}{$H+}
 
uses {$IFDEF UNIX} {$IFDEF UseCThreads}
  cthreads, {$ENDIF} {$ENDIF}
  Classes,
  SysUtils,
  IdIRC;
 
{ you can add units after this }
var
  a: string;
  MyIdIRC: TIdIRC; // Vllt. heißt es auch anders, musst du mal schauen
begin
  ReadLn(a);
  if a = 'Connect' then
  begin
    begin
      MyIdIRC := TIdIRC.Create // Kann sein dass da noch ein Parameter hin muss, aber du musst erst das Objekt konstruieren
      MyIdIRC.username := 'Bot';           
      MyIdIRC.nickname := 'Bot';           
      MyIdIRC.Host := '127.0.0.1';            
      MyIdIRC.Port := 6667;                     
      try                                  
        MyIdIRC.Connect();                     
        MyIdIRC.Join('#test');
      except                                
        ShowMessage('Fehler beim Verbinden!');
      end;
      FreeAndNil(MyIdIRC); // Objekt wieder freigeben
    end;
  end;
end.
Zuletzt geändert von compmgmt am Sa 23. Jan 2016, 21:01, insgesamt 2-mal geändert.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Indy, "Identifier not found" error

Beitrag von Dragon »

compmgmt danke so läuft der Compiler schonmal durch nur showmassage macht jetzt noch Probleme.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Indy, "Identifier not found" error

Beitrag von compmgmt »

Dragon hat geschrieben:compmgmt danke so läuft der Compiler schonmal durch nur showmassage macht jetzt noch Probleme.
Das liegt am Debugger. Probiere es mal direkt aus dem Ordner zu starten, dann müsste es gehen

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Indy, "Identifier not found" error

Beitrag von Dragon »

Der Error kommt schon beim compilieren nicht erst beim debuggen

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Indy, "Identifier not found" error

Beitrag von compmgmt »

Dragon hat geschrieben:Der Error kommt schon beim compilieren nicht erst beim debuggen
Richtig. Der Debugger ignoriert das "except"

Kompileiere das Programm, gehe in den Ordner in dem das Programm gespeichert ist und starte es per Doppelklick. Dann funktioniert es.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Indy, "Identifier not found" error

Beitrag von Dragon »

DA gibs je eben nichts zum ausführen weil bei "ShowMessage" der kompiler mosert

ich kommentiere es mal es und teste es dann

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Indy, "Identifier not found" error

Beitrag von compmgmt »

Dragon hat geschrieben:DA gibs je eben nichts zum ausführen weil bei "ShowMessage" der kompiler mosert

ich kommentiere es mal es und teste es dann
Was ist denn die Fehlermeldung. "Access Violation" oder "Blabla.exe hat eine Exception vom Typ..."?
Du darfst das Programm nicht mit der F9-Taste starten, sondern musst es wie der Endbenutzer über den Explorer bzw. Dateimanager ausführen. Sonst meckert natürlich der Debugger.
Zuletzt geändert von compmgmt am Sa 23. Jan 2016, 21:12, insgesamt 1-mal geändert.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Indy, "Identifier not found" error

Beitrag von Dragon »

ok wenn ich es auskommentiere geht es :)
muss nurnoch die fehlerausgabe anpassen damit sie aufm CLI ausgegben wird, danke.

PS: Er hatte auch einen "Identifier not found" ausgeworfen

Aber show message macht sowiso keinen sinn in ner CLI anwendung werde ich noch ändern
Zuletzt geändert von Dragon am Sa 23. Jan 2016, 21:13, insgesamt 1-mal geändert.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Indy, "Identifier not found" error

Beitrag von compmgmt »

Dragon hat geschrieben:ok wenn ich es auskommentiere geht es :)
muss nurnoch die fehlerausgabe anpassen damit sie aufm CLI ausgegben wird, danke.
ACHSO! Du bist in einem Konsolenprogramm. Da musst du die "MessageBox"-Funktion benutzen

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Indy, "Identifier not found" error

Beitrag von Dragon »

so hab das show mesage mal geg ein writeln getauscht.
Er kompiliert es auch anstandslos, aber wenn ich dann provoziere das er die Meldung ausgeben müsste, gibt er die Meldung nicht aus,
sondern beendet das programm direkt ohne die meldung vorher auszugeben.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Indy, "Identifier not found" error

Beitrag von compmgmt »

Da weiß ich jetzt grade nicht, woran es liegt. Aber du solltest noch den gesamten Zugriff in ein try-finally packen. Also ungefähr so:

Code: Alles auswählen

...
try
      MyIdIRC := TIdIRC.Create // Kann sein dass da noch ein Parameter hin muss, aber du musst erst das Objekt konstruieren
      MyIdIRC.username := 'Bot';           
      MyIdIRC.nickname := 'Bot';           
      MyIdIRC.Host := '127.0.0.1';            
      MyIdIRC.Port := 6667;                     
      try                                  
        MyIdIRC.Connect();                     
        MyIdIRC.Join('#test');
      except                                
        WriteLn('Fehler beim Verbinden!');
      end;
finally
      FreeAndNil(MyIdIRC);
end;
...
 

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Indy, "Identifier not found" error

Beitrag von Dragon »

Hab deine änderungen noch mit eingefügt, danke für deine hilfe.

bloß writeln macht immernoch probleme wird nicht angezeigt.

Antworten