![]() |
Fehler bei Funktionszuweisung
Hallo Leute...
ich erhalte eine Zugriffverletzung, wenn ich einem Event meiner Klasse eine Funktion zuweise, ich weiß jedoch nicht woran es liegt... Die Klasse
Delphi-Quellcode:
...
type TSharkStatusEvent = procedure(Status: string); TShark = class private FOnStatus: TSharkStatusEvent; procedure SendStatus(Status: string); public property OnStatus:TSharkStatusEvent write FOnStatus; procedure ParseFile(FilePath : string); end; var Shark: TShark; implementation procedure TShark.ParseFile(FilePath: string); begin //Statusausgabe SendStatus('Erhalte "' + FilePath + '" zum parsern...'); end; procedure TShark.SendStatus(Status: string); begin //Prüfen ob eine Funktion abgelegt wurde if Assigned(FOnStatus) then begin //Senden an das Event FOnStatus(Status); sleep(10); end; end; und hier der aufruf
Delphi-Quellcode:
program Parser;
{$APPTYPE CONSOLE} {$WARNINGS ON} uses SysUtils, Classes, SharkParser; {$R *.res} procedure StatusWrite(Status: string); begin //Anzeigen das Statuses Write(Status + #13#10); sleep(2000); end; //Automatischer aufruf begin //Bildschirm Write('#################################'+#13#10); Write('##########SharkParser############'+#13#10); Write('#################################'+#13#10#13#10); //Kurze Pause Sleep(2000); //Laden der Datei Write('Uebergebe ' + ParamStr(1) + ' an den Parser...'+#13#10); Shark.OnStatus := StatusWrite; //Hier erhalte ich den Zugriffs fehler! Shark.ParseFile(ParamStr(1)); //Parsen lassen Write('Parsing abgeschlossen.'+#13#10); Sleep(2000); end. |
Re: Fehler bei Funktionszuweisung
Hallo,
wo wird das Objekt erzeugt, bzw. wird es überhaupt erzeugt? |
Re: Fehler bei Funktionszuweisung
Wo wird das Objekt Shark erstellt?
|
Re: Fehler bei Funktionszuweisung
ah, okay danke...
hm... aber warum funktion der funktionsaufruf , jedoch die eiegnschaft nicht? naja mit nem Creat gehts... |
Re: Fehler bei Funktionszuweisung
Okay wir sind jetzt ganz wo anders, aber ich wollte keine neue Topic aufmachen, weil das mit dem gleichn zutun hat...
Delphi-Quellcode:
Ich erhalte eine Fehlermeldung:
program Neon;
uses Forms, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdTCPServer, Classes, Controls; {$R *.res} var TcpClient: TIdTcpClient; TcpServer: TIdTcpServer; Buffer: String; procedure ServerExec(AThread: TIdPeerThread); begin //Der Server wurde aufgerufen end; begin //StartUp, anschalten der Tcp's TcpClient := TIdTcpClient.Create(Application.Owner); //Client erstellen TcpClient.Port := 18754; //Port festlegen TcpServer := TIdTcpServer.Create(Application.Owner); //Server erstellen TcpServer.DefaultPort := 18754; //Port festlegen TcpServer.Active := true; //Server starten //Events setzen TcpServer.OnExecute := ServerExec; //Hier ist der Fehler //Anlaufen der DauerSchleife while not Application.Terminated do begin end; end. [Fehler] Neon.dpr(36): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur' was ist da falsch? |
Re: Fehler bei Funktionszuweisung
... das ServerExec() eine Procedure ist und keine Methode?
|
Re: Fehler bei Funktionszuweisung
Ja... das ist mir auch klar, aber wie bekomme ich das jetzt hin, muss ich ein Object machen, das die Funktion ServerExec enthält?
Geht es auch nicht so umständlich? |
Re: Fehler bei Funktionszuweisung
Zitat:
|
Re: Fehler bei Funktionszuweisung
okay ich bin ein noob, wie mache ich eine statische mehtode ohne eine instanz?
|
Re: Fehler bei Funktionszuweisung
Gaaaanz einfach. :)
Delphi-Quellcode:
Type THelper = class public class procedure ServerExec((AThread: TIdPeerThread); end; : : TcpServer.OnExecute := THelper.ServerExec; //Hier WAR der Fehler Hoffe es hilft :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz