Idftp1 Problem (Bug?)

Für Fragen von Einsteigern und Programmieranfängern...

Idftp1 Problem (Bug?)

Beitragvon reiter » 14. Sep 2018, 09:49 Idftp1 Problem (Bug?)

Ich bräuchte das Ereignis getafterput im idftp1

Nur wenn ich dieses anklicke bringt er mir sofort einen Fehler das ich das nicht auswählen kann
Und Fehler in der idglobal

Kann das jemand nachvollziehen?
Und wie kann ich das getafterput irgendwie nutzen?

Danke
Reiter
reiter
 
Beiträge: 63
Registriert: 18. Nov 2017, 16:58

Beitragvon Warf » 14. Sep 2018, 12:28 Re: Idftp1 Problem (Bug?)

Setz das Event einfach im Code
Code: Alles auswählen
DeinControl.EventName := @EventHandleFunktion;

Dann mit dem textcursor auf EventHandlerFunktion gehen und Strg+Shift+C drücken und Lazarus erstellt den eventhandler für dich (oder du schreibst die Funktion selbst)

Den fehle in der idglobal behebst du indem du Indy neu kompilierst (Package öffnen und kompilieren drücken) das muss man ab und an mal machen, keine Ahnung warum.

Der aktuelle Trunk von Indy ist aber sowieso etwas kaputt für Lazarus, ich musste als ich es demletzt neu installiert hab 2 Zeilen per Hand fixen (eine typdefinition und ein ifdef deprecated)
Warf
 
Beiträge: 985
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon reiter » 14. Sep 2018, 17:19 Re: Idftp1 Problem (Bug?)

Werde das indy mal neu compilieren... Mal sehen
Aber was mich viel mehr interessiert
Kannst mir das mit dem Event bitte etwas näher erklären?
Wäre ich dir sehr dankbar drüber

Eventhandlerfunktion usw
Wie würde die Syntax dazu aussehen
reiter
 
Beiträge: 63
Registriert: 18. Nov 2017, 16:58

Beitragvon Warf » 14. Sep 2018, 19:22 Re: Idftp1 Problem (Bug?)

Ein Event ist ein funktionspointer, z.b. Ein OnClick Event ist vom Typ TNotifyEvent
Code: Alles auswählen
type
  TNotifyEvent = procedure (Sender:TObject) of object;


Das heißt der eventhandler muss eine Methode (also die Funktion einer Klasse sein) die 1 argument annimmt das vom Typ TObject sein.
Ohne das of object würde es eine normalen procedure und keine Methode sein
Geht natürlich auch mit Funktionen:
Code: Alles auswählen
TTestFunc = function (AIndex: Integer): Boolean; // eine Funktion, keine Methode, die einen Boolean zurückgibt und einen Integer als Argument nimmt


Den funktionspointer einer Funktion bekommst du über @:
Code: Alles auswählen
function test(AIndex: Integer): Boolean;
Begin
  Result := AIndex > 0;
End;
 
...
Var t: TTestFunc;
...
  t := @test;
  If t(42) then ...


Schau dir einfach die Definition der property an und Bau die Methode selbst
Warf
 
Beiträge: 985
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon reiter » 14. Sep 2018, 21:10 Re: Idftp1 Problem (Bug?)

danke...
im grunde muss die funktion nur eine andere form aufrufen was nach dem upload auf den ftp passieren sollte weil in der anderen form ein telnet befehl ausgelöst wird..
darum wollte ich die methode afterput verwenden weil woher soll den telnet wissen wann die datei vollständig hochgeladen wurde

oder kann man das anders und einfacher lösen?

Dann mit dem textcursor auf EventHandlerFunktion gehen und Strg+Shift+C drücken und Lazarus erstellt den eventhandler für dich (oder du schreibst die Funktion selbst)


kannst mir das dann nochmal erläutern ?

danke
reiter
 
Beiträge: 63
Registriert: 18. Nov 2017, 16:58

Beitragvon Warf » 15. Sep 2018, 00:30 Re: Idftp1 Problem (Bug?)

Strg+Shift+C ist der Lazarus Shortcuts um Code automatisch zu erzeugen. Z.B. Wenn du einen eventhandler zuweist der noch nicht existiert kann Lazarus die Funktion damit automatisier erzeugen. Dafür muss der textcoursor (der blinkende strich) nur irgendwo auf dem Unbekannten bezeichnet liegen.

Andere Anwendungsmöglichkeiten ist das erstellen von properties oder das erzeugen lokaler Variablen.
Z.b. Bei i:=5; erzeugt Lazarus wenn man bei i Strg+Shift +C drückt die lokale Variable i als Integer (echt praktisch da man dann nicht extra zum Funktionsumfang scrollen muss) funktioniert auch für For Zähler Variablen
Warf
 
Beiträge: 985
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon reiter » 15. Sep 2018, 10:55 Re: Idftp1 Problem (Bug?)

Vielen Dank für die Erklärung...
Werde ich mal probieren

Gruß
Reiter
reiter
 
Beiträge: 63
Registriert: 18. Nov 2017, 16:58

Beitragvon reiter » 16. Sep 2018, 13:05 Re: Idftp1 Problem (Bug?)

um nochmal auf den fehler in der idglobal zu kommen

kann mir da vielleicht mal jemand helfen oder umschreiben? hab ich vergessen was hinzuzufügen?
da ich auf den mac und linux das mache
wenn ich auf ereignisse afterput klicke steigt er hier in der idglobal aus

// For linux the user needs to set this variable to be accurate where used (mail, etc)
GOffsetFromUTC: TDateTime = 0{$IFDEF HAS_DEPRECATED}{$IFDEF USE_SEMICOLON_BEFORE_DEPRECATED};{$ENDIF} deprecated{$ENDIF};

fehlermeldung

IdGlobal.pas(1889,105) Error: ; erwartet aber deprecated gefunden

hab auch versucht mich hier einzulesen.. TNotifyEvent
da steig ich aber noch nicht durch
obwohl das eigentlich besser wäre weil man da unabhängig eine methode erstellen kann

bzw vielleicht könnte mir hier jemand mit einer methode helfen?
was ich mit afterput auslösen wollte ist eine form2.show zu erreichen also wenn die datei fertig auf den ftp geladen ist,soll er form2 aufrufen

danke schon mal
reiter
 
Beiträge: 63
Registriert: 18. Nov 2017, 16:58

Beitragvon Warf » 16. Sep 2018, 15:48 Re: Idftp1 Problem (Bug?)

Quick and dirty: Ersetz den ganzen Ausdruck hinter der 0 einfach mit ;
Richtig: definiere das Use_semicolon_before_deprecated (oder wie das heißt) in den Package Einstellungen
Warf
 
Beiträge: 985
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon reiter » 17. Sep 2018, 10:28 Re: Idftp1 Problem (Bug?)

vielen dank..
jetzt bringt die idglobal keinen fehler mehr
reiter
 
Beiträge: 63
Registriert: 18. Nov 2017, 16:58

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

cron
porpoises-institution
accuracy-worried