Einzelnen Beitrag anzeigen

sk0r

Registriert seit: 1. Mai 2007
181 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Form2 soll auf das ClientSocket von Form1 zugreifen

  Alt 10. Jun 2007, 15:04
Hallo, danke erstmal für die Hilfe.

Ich will es dann jetzt erstmal so machen, dass ich das CLientSocket
in einer eigenen Unit habe. Leider kommt da schon der Fehler, denn
wenn ich auf Werte zugreifen will, bekomme ich eine AV.

Zitat:
Im Projekt Project1.exe ist Exception der Klasse EAccessViolation aufgetreten
Meldung: Zugriffverletzung bei Adresse 0045522E im Modul Project1.exe.
Lesen von Adresse 00000004' Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Meine Unit sieht so aus:

Delphi-Quellcode:
unit dClientSock;

interface

uses ScktComp, Windows, Sysutils;

type
  TCLSocket = class
  tClientSck: TClientSocket;
  procedure ConnectClient(lpHost: String; iPort: Integer);
  procedure Send(lpTextMsg: String);
  function ReturnValue:String;
  procedure SetValue(lpNewValue: String);
  function ReturnConnect:Boolean;
  procedure tClientSckConnecting(Sender: TObject; Socket: TCustomWinSocket);
  procedure tClientSckConnect(Sender: TObject; Socket: TCustomWinSocket);
  procedure tClientSckDisconnect(Sender: TObject; Socket: TCustomWinSocket);
  procedure tClientSckRead(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Privat }
  public
    { Publik }
end;

implementation

var
  gCurrentVal: String;
  bIsConnected: Boolean;
  gCurrentHost: String;

function TCLSocket.ReturnValue:String;
begin
  result := gCurrentVal;
end;

procedure TCLSocket.SetValue(lpNewValue: String);
begin
  gCurrentVal := '';
end;

function TCLSocket.ReturnConnect:Boolean;
begin
  result := bIsConnected;
end;

procedure TCLSocket.tClientSckConnecting(Sender: TObject; Socket: TCustomWinSocket);
begin
  bIsConnected := false;
  gCurrentVal := 'Connecting to ' + gCurrentHost;
end;

procedure TCLSocket.tClientSckConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  bIsConnected := true;
  gCurrentVal := 'Connected to ' + gCurrentHost;
end;

procedure TCLSocket.tClientSckDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  bIsConnected := false;
  gCurrentVal := 'Connection lost from ' + gCurrentHost;
end;

procedure TCLSocket.tClientSckRead(Sender: TObject; Socket: TCustomWinSocket);
var
  gServerText: String;
begin
  gServerText := Socket.ReceiveText;
end;

procedure TCLSocket.ConnectClient(lpHost: String; iPort: Integer);
begin
  gCurrentHost := lpHost;
  tClientSck.Port := iPort; //Access Violation
  //tClientSck.Host := lpHost;
  //tClientSck.Active := true;
end;

procedure TCLSocket.Send(lpTextMsg: String);
begin
  tClientSck.Socket.SendText(lpTextMsg);
end;

end.
Vielleicht keine schöne Lösung, aber wenn es klappt, reicht es erstmal. Wisst ihr was ich falsch gemacht habe?

Danke schon mal!
  Mit Zitat antworten Zitat