AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Thread in Anwendung verursacht EAVoilation
Thema durchsuchen
Ansicht
Themen-Optionen

Thread in Anwendung verursacht EAVoilation

Ein Thema von Cyberaxx · begonnen am 12. Nov 2006 · letzter Beitrag vom 13. Nov 2006
 
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#1

Thread in Anwendung verursacht EAVoilation

  Alt 12. Nov 2006, 20:26
Hallo,

habe da ein kleines bis mittelgrosses Problem.

Ich schreibe einen Bot für ein Online Game. Die Ausganskomponente ist nicht das beste,
damit ich aber Funktionen nutzen kann muss ich sie in Threads auslagern
(Pro Befehl einen Thread). Da ich später evtl. das ganze in DLL's auslagern will um es
Modular zu gestalten, hab ich bereits angefangen es umzubauen.

Das Synchronize des Threads verweist auf eine Function innerhalb des Hauptprogrammes.

Delphi-Quellcode:
Function TCore_Form.HandleThreadMessages(IsCommand: Boolean; Msg: String): Boolean;
Begin
Msg := FormatOutgoing(Msg);
AOChat.SendGroup('Point of no Return', 'Test');

If Config.Parse AND (IsCommand OR Not IsCommand) Then
  Begin
  AOChat.PrivateGroupMessage(Config.Charname, Msg);

  Msg := ReplaceHTML(Msg);
  IRCSocket.Socket.SendText( Format(ReturnAOMsg, [Config.BotNick, Config.AONick, '', Msg]) );
  End;
End;
Die Configuration ist in einem Record hinterlegt.

Delphi-Quellcode:
Type
  TConfig = Record
    { AOChat }
    Username : String; // Benutzername
    Passwort : String; // Passwort
    Dimension : String; // Dimension
    Charname : String; // Charactername
    Organisation : String; //
    { IRC }
    IRCEnabled : Boolean; // IRC Komunikation aktiv
    IRCServer : String; // IRC Server Host
    IRCPort : Integer; // IRC Server Port
    IRCPass : String; // IRC Server Passwort
    BotChan : String; // Channel in dem der Bot sitzt
    BotChanPass : String; // Passwort zum Channel
    BotNick : String; // Nickname des Bots
    BotNickAlt : String; // Alternativname == Nickname + Prefix
    AONick : String; // Nick der in AO angezeigt wird
    IRCNick : String; // Nick der im IRC angezeigt wird
    Parse : Boolean; // Abfragen übergeben
    { Befehlsinterpreter }
    CMD : String; // Interpreter für die Befehle ! , . :
    {}
    BotOwner : String;
  End;
Er ist in einer Unit auf die alle Zugriff haben. Geladen wird die Konfiguration dann
Constant.GetConfiguration(Config); Function GetConfiguration(Var LConfig: TConfig): Boolean; So schauts in der Constant.pas aus.

Jedesmal wenn ich aus dem Thread die Function aufrufe kommt es zu einer Zugriffsverletzung.
Delphi-Quellcode:
procedure TChangeMemberstatus.Execute;
begin
  CreateDataModules;

  Synchronize(OutputMessage);

  FreeDataModules;
end;
Die eigentliche Übergabe ist:
Core_Form.HandleThreadMessages(True, Msg); Hab erstmal damit kämpfen müssen das der Record daten enthällt im Thread. Jedesmal wenn die Function aufgerufen wurde, waren im Record keine Werte. Das ist jedoch behoben aber die Zugriffsverletzung bleibt. Mache ich da was falsch oder geht das einfach nicht auf die Art?
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
 


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 10:19 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