AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei Funktionszuweisung

Ein Thema von Desmulator · begonnen am 20. Dez 2007 · letzter Beitrag vom 20. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#1

Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 13:35
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.
Lars
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 13:39
Hallo,

wo wird das Objekt erzeugt, bzw. wird es überhaupt erzeugt?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 13:40
Wo wird das Objekt Shark erstellt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#4

Re: Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 14:17
ah, okay danke...

hm... aber warum funktion der funktionsaufruf , jedoch die eiegnschaft nicht?

naja mit nem Creat gehts...
Lars
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#5

Re: Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 17:38
Okay wir sind jetzt ganz wo anders, aber ich wollte keine neue Topic aufmachen, weil das mit dem gleichn zutun hat...

Delphi-Quellcode:
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.
Ich erhalte eine Fehlermeldung:

[Fehler] Neon.dpr(36): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'

was ist da falsch?
Lars
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 17:39
... das ServerExec() eine Procedure ist und keine Methode?
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#7

Re: Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 17:41
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?
Lars
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 17:45
Zitat von Desmulator:
Ja... das ist mir auch klar, aber wie bekomme ich das jetzt hin, muss ich ein Object machen, das die Funktion ServerExec enthält?
Du musst dir eine Klasse bauen welche die ServerExec als Methode implementiert, ja. Und wenn du unbedingt keine Klasse instanziieren willst, etc, dann bau dir diese als statische Methode. Delphi gibt bei diesen (im Gegensatz zu z.B. C++) die Klassen-Type-Informationen als versteckten ersten Parameter mit und damit passt das ganze wieder und ist zuweisungskompatibel.
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#9

Re: Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 17:51
okay ich bin ein noob, wie mache ich eine statische mehtode ohne eine instanz?
Lars
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Fehler bei Funktionszuweisung

  Alt 20. Dez 2007, 18:13
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
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz