Autor Beitrag
olliistmeinname
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: So 12.10.03 18:59 
Hi ! Ich hab so ein kleines Problem . Ich möchte die Komponenten Tserversocket/Tclientsocket nicht in eine Unit , die zu einem Form gehört , initialisieren , sondern ohne Forms in der Projektdatei. Doch es klappt irgendwie nicht. Ich bekomme eine exception. :twisted: :twisted:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
program Project1;

uses
  windows,shellapi,ScktComp;

{$R *.res}

var
serversocket1 : tserversocket;


begin
serversocket1.Active := true;   <-- Hier tritt der Fehler auf
end.

thx schon mal :D

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.

_________________
Olliistmeinname und bin da für jede Dame
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: So 12.10.03 19:26 
mit der Deklaration einer Variablen ist es nicht getan!!

du must

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var 
serversocket1 : tserversocket; 


begin 
  ServerSocket1:= TServerSocket.create;// <- Erst erstellen
 // Ports und Adressen nicht vergessen zu setzen !!  
  serversocket1.Active := true;   <-- dann zugreifen!! 
end.


grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
olliistmeinname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: So 12.10.03 19:31 
THX !!


ausblenden Quelltext
1:
ServerSocket1:= TServerSocket.create(serversocket1);					


Da fehlte noch serversocket1 aber es geht !

mfg OLLI

_________________
Olliistmeinname und bin da für jede Dame
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: So 12.10.03 20:54 
wäre vielleicht auch anzumerken, dass du das dingens nach gebrauch wieder freigeben solltest ;) sonst gibts datenmüll im RAM und das mögen andere Programmierer gar net ;) könnte dann in irgendwelchen "unerklärlichen" exceptions von anderen Programmen enden... also: immer schön aufräumen ;)

ausblenden Quelltext
1:
ServerSocket1.Free;					


MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
olliistmeinname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: So 12.10.03 22:18 
So !

Jetzt bin ich soweit und habe die Komponente implementiert , aber da kommen schon die nächsten Probleme .
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
program projekt1;

uses
 windows ,ScktComp, Dialogs ;
{$R *.res}

procedure ServerSocket1ClientRead(Sender: TObject;
 socket: TCustomWinSocket);
var s :string;

begin
s := socket.ReceiveText;
showmessage(s);
end;


begin
serversocket1.active := true;
...
...
end.

Ich dachte mir , dass wenn der Client eine Nachricht an den Server geschickt hätte , die Procedure ausgeführt werden müsse. Ich dachte wieder falsch.

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.

_________________
Olliistmeinname und bin da für jede Dame
olliistmeinname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: Di 14.10.03 07:24 
Bitte :) Das Ist seht wichtig :) Jemand weiß doch sicher die Lösung :?

_________________
Olliistmeinname und bin da für jede Dame
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Di 14.10.03 11:38 
versuch mal vorher das zu setzen:

ausblenden Quelltext
1:
ServerSocket1.OnClientRead:=ServerSocket1ClientRead;					



müsste dann so gehn, wenn du das vor
ausblenden Quelltext
1:
serversocket1.Active := true;					


setzt....


MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
olliistmeinname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: Di 14.10.03 14:09 
Geht nicht. Er meint , dass seien inkompatible Typen : Methodenzeiger und Reguläre Prozedur.

_________________
Olliistmeinname und bin da für jede Dame
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Di 14.10.03 14:18 
Das ist OK, Du mußt dem Methodenzeigen schon eine Objektmethode übergeben.

barfuesser
olliistmeinname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: Di 14.10.03 14:52 
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
program test;


uses
 windows ,messages,ScktComp,Dialogs ;
{$R *.res}


procedure ServerClientRead(Sender:TObject;socket:TCustomWinSocket);
var s :string;
begin
s := socket.ReceiveText;
showmessage(s);
end;


var
serversocket1 : tserversocket;
label
start;

begin
serverSocket1:= TServerSocket.create(serversocket1);
Serversocket1.OnClientRead:=ServerClientRead; <<< Hier gibt es den Fehler beim kompilieren.
serversocket1.Active := true;

start:
sleep(100);
goto start;

end.



Irgendwas mache ich falsch :(

_________________
Olliistmeinname und bin da für jede Dame
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Di 14.10.03 15:03 
Ich glaube zur Lösung Deines Problems, solltest Du Dir erst einmal Grundlagen der objektorientierten Programmierung mit Delphi aneignen.

Zum zweiten wird mir immer ganz anders, wenn ich in Quelltexten auf Label oder einen GoTo-Befehl stoße.

barfuesser
olliistmeinname Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: Di 14.10.03 15:10 
Wenn ich das mit Forms mache , dann gibt es keine Probleme.
Man kann da ja mit einem Klick auf dem Objektinstpektor Proceduren definieren etc. Aber wenn man keine Forms benutzt , muss man das selber machen , was sonst Delphi übernimmt , oder ?
Naja das Problem besteht immer noch ...

_________________
Olliistmeinname und bin da für jede Dame
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Di 14.10.03 15:41 
Wenn Du das mit Forms machst, dann werden automatisch Objekte erstellt. Und diese haben Methoden und keine Prozeduren. Wenn Du ohne Forms arbeiten möchtest, dann mußt Du trotdem Objektorientiert programmieren. Du mußt also eine Klasse erstellen, von der Du dann Objekte erzeugst. Und in dieser Klasse mußt Du dann eine Methode erzeugen, die Du an das Event übergeben kannst.

barfuesser