Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Contai

  Alt 20. Okt 2017, 16:46
Wie machst du es sonst, wenn der Compiler nach dem Code eintippen meldet das in der Parameterliste ein Argument zuviel oder zuwenig ist?
Genau so vor meiner Anfrage gemacht und folgenden einzigen Parameter angezeigt bekommen:
AMethod
Nach dem Hinzufügen eines weiteren Parameters (zb nil) kommt immer noch die gleiche Fehlermeldung.
Es muss also eher an dem Parameter FOnComplete() liegen...

Synchronize(nil, FOnComplete(Self, FFileName));
Abgesehen davon das der Cursor hinter der öffnen Klammer und Ctrl+Shift+Space vier Überladungen für Synchronize zeigt hast du natürlich recht.

Du musst den Code so anpassen:
Delphi-Quellcode:
procedure TMp3ReaderThread.DoComplete;
begin
  if Assigned(FOnComplete) then
  begin
    Synchronize(nil,
      procedure
      begin
        FOnComplete(Self, FFileName)
      end);
  end;
end;
Erklärung:
Es wird einer dieser Typen erwartet:
Delphi-Quellcode:
  TThreadMethod = procedure of object;
  TThreadProcedure = reference to procedure;
FOnComplete ist aber vom Typ TMp3ReaderComplete = procedure (Thread: TMp3ReaderThread; FileName: string) of object; , darum muss man da noch was drumstricken.

Geändert von TiGü (20. Okt 2017 um 18:07 Uhr)
  Mit Zitat antworten Zitat