Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem: Programm zum Datentausch schmiert ab (https://www.delphipraxis.net/5707-problem-programm-zum-datentausch-schmiert-ab.html)

Hanswurst 16. Jun 2003 13:35


Problem: Programm zum Datentausch schmiert ab
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin Leutz
ich hab da mal n Proggi (Client und Server) geschrieben , das dazu da ist , übers TCP/IP-Protokoll Daten und kleinere nachrichten zu vershicken ..

sogesehen ja nix großes , aber der Client schmiert mir ab , wenn ich Texte verschicken will ..
da sagt das ServerProg , dass der Client disconnected hat , aber der Client meint , dass er noch connected is ..

Im Anhang is die Source ..
bitte mal durchguckn und fixen :lol:

falls Datein fehlen .. einfach posten ..

THX

Bis denn
CU

Hanswurst 16. Jun 2003 14:25

seit ohr noch am grübeln , oder kennt sich niemand damit aus ??
:mrgreen:

sakura 16. Jun 2003 14:30

Zitat:

Zitat von Hanswurst
seit ohr noch am grübeln , oder kennt sich niemand damit aus ??

Ehrlich gesagt, habe ich keine Lust den ganzen Source durchzuschauen. Aber Du kannst Dir ja mal ein funktionierendes OS-Beispiel anschauen, vielleicht hilft Dir das ja weiter...

http://www.delphipraxis.net/viewtopic.php?t=4440

...:cat:...

Hanswurst 16. Jun 2003 15:00

Moin Sakua ..
so viel Source is das garnet ..
das größte an der RAR-Datei , sind die komprimierungsschlüssel oder wie man die auch immer nennt ..

und dieses Beispiel hab ich mir schon über 3 mal durchgelesen ..

aja.. irgendwie schreibst du bei jeder Frage , die in diese Richtung , auch wenns garnix bringt , weil die Userfragen anders lauten , geht
disen Link dazu , ohne dich sogesehen mit den problemen der User zu befassen ..

Bis denn
CU

sakura 16. Jun 2003 15:05

Zitat:

Zitat von Hanswurst
aja.. irgendwie schreibst du bei jeder Frage , die in diese Richtung , auch wenns garnix bringt , weil die Userfragen anders lauten , geht disen Link dazu , ohne dich sogesehen mit den problemen der User zu befassen ..

Wie gesagt, ich habe weder Lust noch Zeit mich mit dem kompletten Source zu beschäftigen. Du könntest ja einfach mal die relevanten Stellen posten und dann helfe ich auch meist konkreter. Warum aber nicht ein Beispiel nennen, welches genau das tut, was Du willst? Es schickt Nachrichten zwischen mehreren Clients via einem Server hin und her...

...:cat:...

Daniel 16. Jun 2003 15:07

Hanswurst,

Du kannst nicht ernsthaft erwarten, uns ein Programm vor die Füße werfen zu können, aus dem wir dann die Fehler raussuchen.

Das ist nicht Sinn und Zweck dieses Forums.

Daniel B 16. Jun 2003 15:56

Hallo,

ich muss mich ernsthaft Daniel anschliessen.
Das erst das Du machen wirst Hanswurst, ist den Debugger anzuschmeissen und den Fehler zu suchen. Wenn Du die Zeile oder gar Prozedur gefunden hast, dann sind es nur noch ein paar Zeilen, die kannst Du ruhig hier posten, vielleicht findet dann jemand den Fehler. Aber Du kannst nciht erwarten das wir hier alle "irgend welche" Projekte komplett durchschauen!

Grüsse, Daniel :hi:

Hanswurst 16. Jun 2003 18:01

Moin Leutz
also..
das mit dem "vor die Füße werfen" kann ich ja verstehen , dass ihr es so auffast ..

ich hab mir meinen Source jtzt schon das 4. Mal durchgelesen ..
und der Debugger zeigt mir auch keinen Fehler an ..
das ist eben das Problem ..
ich weis , es ist schwer nachzuvollziehn , dass ich schreibe , dass nichtmal der Debugger ein Problem findet ..
aber irgendwie schmiert mir entweder das ClientProg direkt nach dem Connecten ab , oder wenn ich eine Nachricht zum Server (Chat) schicken will ..

warum es direkt nach dem Connecten abschmiert is mir ein Rätsel ..

und noch komischer ist , wenn ich vom Client zum Server ne ChatNachricht schicken will , meint der Server , dass der Client Disconnectet , wohlgemerkt "geglückt" Disconnectet hat , aber der Client meint , dass die Verbindung noch besteht ..
wenn ich jetzt mit dem Client neu Connecte , spukt es ne Fehlermeldung aus , wo steht :
Die Verbindung besteht bereits
und schmiert gleich ab ..

und wenn ich ChatNachrichten schicke , zeigt sie mir der Server NICHT an , da er ja denkt/weis , dass der Client nichtmehr Verbunden ist ..

also irgendwie ne komische Sache ...

PS: falls ich Admins/SuperMods/Mods einwenig vergrauelt habe , tut es mir sehr Leid ..
aber ich glaub , dass es eher an den über 30 Grad liegt , die in meinem Zimmer herschen ..
*sichbeidenAdminsentschuldigt*
und *versuchtsichzubessern*

Bis denn
CU

Christian Seehase 16. Jun 2003 19:16

Moin Hanswurst,

"das Programm schmiert ab" solltest Du vielleicht mal etwas präziser fassen.
Welche Fehlermeldung kommt?
Oder verschwindet das Programm einfach?

Hanswurst 16. Jun 2003 21:14

Präziser :
du kennst es doch , wenn ein Programm abschmiert , du dann mit nem anderen Prog "drüberziehst" , also verschiebst , dann wir das Prog nurnoch so weis angezeigt ..

im Anhang genauer ..
damn... ich hab ja grad erst formatiert und noch kein Delphi druf ...

aber ich glaub , du weist , von was ich rede ...

wenn du z.B in deinem Prog ein Memo-Feld mit Text hast , und es schmiert ab , dann ist das einzige , dass davon angezeigt wird , der Rand des Memos ..
genau das selbe is dann auch mit Buttons , Edits usw..

aja .. wenn du dann mit dem Mauszeiger drüberfährst , dann bleibt der , z.B auf nem Memofeld , anstatt ][ disem (halt so ähnlich) , auf dem Coursor , mit dem man die Größe verändernt ..

Christian Seehase 16. Jun 2003 22:29

Moin Hanswurst,

Zitat:

Zitat von Hanswurst
du dann mit nem anderen Prog "drüberziehst" , also verschiebst , dann wir das Prog nurnoch so weis angezeigt ..

Jetzt hab' ich verstanden was Du meinst.
Unter "abschmieren" verstehe ich nur, dass es abstürzt, also eine Fehlermeldung produziert, oder aber sich unerwartet schliesst.

Was Du beschreibst deutet darauf hin, dass das Programm in einer Endlosschleife hängt, in der keine Messages mehr verarbeitet werden.
Deshalb zeichnet sich das Fenster nicht mehr neu, und es kommt zu dem beschriebenen Effekt (einfrieren).

Falls Du die Indys verwendest:
Bei Standardinstallation gibt's auf dem Register Indy Misc die Kompo IdAntiFreeze.
Pack die mal auf Dein Formular, und probiers noch einmal.

Hanswurst 17. Jun 2003 13:00

Namd Leutz
@ Christian
so kann mans auch sehn :)
ich probiers gleich morgen mal aus ..

hab gestern frisch formatiert und neuinstalliert ..
und eine meiner beiden HDDs hat irgendein Problem ..
beim Datentransfer scmiert mir der PC halb ab ..
hab schon alles probiert .. Kabel ausgetauscht .. an anderen Controller gehängt ..
und es bringt nix ..

naja .. erst testen , dann tauschen .. is grad mal 1/4 Jahr alt ..

Bis denn
Cu

[Edit=Sakura]Doppelpost gelöscht.[/Edit]

Hanswurst 21. Jun 2003 15:24

Liste der Anhänge anzeigen (Anzahl: 2)
Moin Leutz
@Christian Seehase
das mit dem Antifreez hab ich ausprobiert ..
nur es hat nix gebracht .. ich verwende ja die INDYs ..
das einzige , was es gebracht hat , ist , wenn man mit dem Client Connected , dass der Client zwar nicht mehr freezed , also man kann ihn noch verschieben , aber man kann nix mehr eingeben ..
und , wenn der Client Connected und gefreezed ist und man den TCPServer des Servers (wie logisch :mrgreen: ) disablet , dass anstatt 2 Meldungen (Verbindung erfolgreich geschlossen(Client) und Zeitüberschreitung der Beendigung des Schließens der Verbindung (oder so ähnlich)(Server)) angezeigt werden , jetzt die beiden angezeigt und noch eine in einer Endlosschleife kommt ...

ich hab den Quelltext noch ein bischen bearbeitet ..
zwar nicht sehr , aber ein wenig ..

Hoffe jemand blickt durch .. :wink:

Bis denn
CU

Christian Seehase 21. Jun 2003 15:53

Moin Hanswurst,

Zitat:

Zitat von Hanswurst
das mit dem Antifreez hab ich ausprobiert ..
nur es hat nix gebracht

Zitat:

Zitat von Hanswurst
.. ich verwende ja die INDYs ..

und AntiFreeze ist eine Komponente der Indys. Soweit passt es doch ;-)

Zitat:

Zitat von Hanswurst
Hoffe jemand blickt durch ..

ich weiss ja nicht wie's anderen geht, aber ich verwende kein RAR ;-)

Hanswurst 21. Jun 2003 16:41

Liste der Anhänge anzeigen (Anzahl: 2)
Moin Leuzt
@Christian Seehase
das mit dem "die INDYs verwend ich ja.." , hab ich nur zur Verdeutlichung geschrieben , da es ja 1.sein könnte , dass ich es noch nicht gepostet hatte und 2. es irgendwie immer Leute gibt (nichts gegen niemand :lol: ,wer den Satz blickt is gut :wink: ) die , zB. das Thema irgendwas mit den INDYs zu tun hat , fragen , ob ich die Kompos aus der Sparte "Internet" oder der INDYs verwende ...

WinRAR ist Plicht :mrgreen:
nee scmarn ..
ich Zips extra für euch .. nee extra für den Chris .. lol

Bis denn
CU

Hanswurst 23. Jun 2003 12:45

habs gezippt ...

oh .. äähhmm ...
hatte ich ja shon geschrieben ..
sorry

bis denn
CU

Hanswurst 23. Jun 2003 12:55

Liste der Anhänge anzeigen (Anzahl: 1)
mir is grad so aufgefallen , dass ich den überarbeiteten Server net abgespeichert hab ...

sorry

im Anhang is die einwenig überarbeitete Ver ...

Christian Seehase 23. Jun 2003 14:09

Moin Hanswurst,

nachdem ich mal die Formulare etwas zusammengestrichen habe (Du benutzt wahrscheinlich Indy 9.0, ich 8.0 ;-) ), konnte ich den Fehler immer noch nachvollziehen.
Der Fehler dürfte in TTimer im ReadLn liegen:
Wenn Du hier als zweiten Parameter keinen Timeout angibst, wartet die Funktion unendlich lange => Programm hängt.

Hanswurst 23. Jun 2003 17:17

aja gut..
also es liegt am Timer..

und wie kann ich bei dem ReadLn nen TimeOut festlegen ???

(kann heut nix denken --> über 30 Grad im Schatten und kein Hitzefrei :cry: )

da fällt mir so ein:
danke für die Analyse :mrgreen:

Bsi denn
CU

Christian Seehase 23. Jun 2003 17:23

Moin Hanswurst,

Zitat:

Zitat von Hanswurst
und wie kann ich bei dem ReadLn nen TimeOut festlegen ???

Zitat:

Zitat von Christian Seehase
Wenn Du hier als zweiten Parameter keinen Timeout angibst,...


Hanswurst 23. Jun 2003 17:30

das mit dem 2.Parameter festlegen hab ich schon kapiert ..
nur hab ich bei mir ja stehen :

Code:
TCPClient.ReadLn(IncomingMSG);
wenn das IncomingMSG net da wär hätt ich ja einfach ne Zahl eingetragen , die dann der TimeOut wäre ..
nur da ich ja dieses IncomingMSG da hab , weis ich net wie man das dann schreibt ..

wie gesagt :
Ich berufe mich auf die Temperatur in meinem Zimmer :wink:

kannste mit bitte mal sagen (aber wohl eher schreiben :lol:) , was ich da schreiben muss ??
THX

Bis denn
CU

Christian Seehase 23. Jun 2003 18:17

Moin Hanswurst,

Zitat:

Zitat von Hanswurst
kannste mit bitte mal sagen (aber wohl eher schreiben ) , was ich da schreiben muss ??

Es gibt da zwei Varianten es herauszubekommen:
  1. Die Hilfe der Indys
  2. (IncomingMSG); diesen Teil löschen, eine ( eingeben, und einen Moment warten. Die Programmierhilfe erledigt den Rest.

;-)

PS: Angabe in ms, wie beim Timer.

Hanswurst 25. Jun 2003 12:56

Danke für den Tip ..
1.wo findet man die Hilfe der Indys ??
meinst du in der "normalen" Hilfe nach INDY suchen und da dann auf den TCPClient ?? weil ich da nix find :(

2.das mit dem "(" hat mir zwar die auztoverfollständigung geöffnet , aber mir net weitergeholfen ...

ich hab bisher den Code :
Code:
var TimeOut:Integer;
TCPClient.ReadLn(TimeOut),IncomingMSG);

aber der meint , dass String und Integer etwas verschiedenes ist ..
irgendwie ja logisch ..

ein bischen Source bitte :D

THX

Christian Seehase 25. Jun 2003 13:07

Moin Hanswurst,

vertausch mal die Message und das Timeout, ausserdem lass mal die Klammer in der Mitte weg (das hätte der Compiler wohl eh' nicht geschluckt).

Was die Hilfe der Indys angeht:
Soweit ich weiss sind die Indys doch fester Bestandteil von D7?
Dann müsste, für mein Verständnis, auch die Hilfe mit in das Hilfesystem integriert sein.

Die Kompo nach der Du suchen musst heisst auch TidTCPClient.

Minz 25. Jun 2003 13:08

Ähm kenne mich mit Indys net aus, aber ein zweiter Parameter
sieht in der Regel so aus:

Anweisung(Parameter1, Parameter2);

Wenn er in Parameter1 also einen String erwartet, was deine
Fehlermeldung deutlich macht, dann...

Gruß Minz

Hanswurst 28. Jun 2003 10:04

Liste der Anhänge anzeigen (Anzahl: 1)
Namd Leutz
das mit dem TimeOut hab ich jetzt (zufällig) rausbekommen :
Code:
TCPClient.ReadLn(IncomingMSG,20);
so ..
erstmal hab ich mich gefreut ..
dannach is mir aufgefallen , dass der Client trotzdem Freezed ..
und ich weis NICHT warum
der Compiller mekert nix ..
also kann ich auch keinen Codeschnipsel Posten , der Probleme macht ..

noch ne Frage:
wenn man den Timer auf 1000 einstellt , werden dann die Mesages , die zwischen dem OnTimer ankommen gelöscht , oder erst dann abgerufen ??
wenn das 2. zutrifft , könnte man den Timer 1000 (oder mehr) stellen
, da es ja 1.nur recheneistung zieht und 2. es auf die Sekunde zeitverzögerung ja net ankommt ; da die meisten Lwute ja relativ langsam schreiben

@Minz
könntest du dich bitte etwas genauer ausdrücken , als dass du einfach schreibst :
[Zitat]
Wenn er in Parameter1 also einen String erwartet, ... , dann ..

wobei sich das latzte "..." direkt auf dein geschriebenes bezieht ...


PS:
den Server hab ich nochnicht verändert , also is nur der Client im Anhang

Bis denn
CU

Minz 28. Jun 2003 10:17

Naja dachte der Hinweis wäre einleuchtend genug gewesen...



Fällt dir denn da gar nichts auf?:


Mein Hinweis:
Anweisung(Parameter1, Parameter2);

Dein zufällig gefundenes:
TCPClient.ReadLn(IncomingMSG,20);

Hanswurst 28. Jun 2003 15:32

darauf bin ich über 2 stunden davor gekommen , bevor ich deinen Post gelesen hatte ...

Hanswurst 2. Jul 2003 12:35

Namd Leutz
würde sich bitte jemand dazu entscheiden , den Source , wenn auch nur kurz, durchzusehen , und mit bitte sagen , wo da der Wurm drin is ??

ich bin schon kurz vor dem Verzweifeln .. :(

der Compiler/debugger mekert NICHTS ..
der Client freezed einfach , wenn ich zum Server connecte ..
und wenn er , klingt komisch is aber so , mal nicht freezed und ich ne Nachricht (TCPClient.writeLN(Edit1.text)) , mit BufferOpen und Close .. ,
zum Server schicke , dann freezed der Client und der Server meint , dass der Client disconnecet ist ..

Bitte helft mir .. *verzweifel*

THX 4 help

Bis denn
CU


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 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