Autor Beitrag
Minime
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Di 05.09.06 20:16 
Abend!

Ich habe ein problem mit (ClientSocket.)Socket.SendText

Im Thread Thread
hatte ich die eine funktion kurz umgeschrieben ( String Output ) und wollte diesen String nun versenden nur leider überträgt die SendText function den String nicht

Ich will nur wissen woran das liegt ;-)


Zuletzt bearbeitet von Minime am Di 05.09.06 21:38, insgesamt 1-mal bearbeitet
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 05.09.06 20:47 
Moin!

Dein Link ist kaputt (das Format ist so: [url=proto_host_file]Text[/url]). ;)

Dann zu deinem Problem: Mach doch mal ein ShowMessage mit dem Ergebnis-String. Wenn das klappt, liegt´s zumindest nicht am .SendText, der sollte dann eigentlich auch laufen.

Klappt das nicht, dann hast du einen Fehler in deiner ExecCommand-Prozedur. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Minime Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Di 05.09.06 21:30 
ja ShowMessage klappt bzw MessageBox


das hatte ich ja schon ausprobiert

evtl wichtig ist das der string so verschickt wird
ausblenden Delphi-Quelltext
1:
2:
3:
buffer := execconsole(C:\test.bat);
buffer := 'Shell#' + buffer;
Socket.SendText(buffer);


auf der anderen seite kann das dann über

Split(data,'#',2) ausgelesen werden kann aber das kommt dort immer

'Shell#' an
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 05.09.06 21:45 
Moin!

OK, dann mach mal folgendes:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
buffer := execconsole('C:\test.bat'); // evtl. auch mal 'cmd /c c:\test.bat' oder direkt 'cmd /c dir'
buffer := 'Shell#' + buffer;
ShowMessage(buffer);
Socket.SendText(buffer);

Wird das beim Sender korrekt angezeigt? Wenn ja, dann gib mal im OnRead des Empfängers den kompletten empfangenen String direkt und ohne Umwege per ShowMessage aus und schau mal, was da wirklich ankommt.

Ansonsten ist das bei dir der klassische Fall: du solltest dir Gedanken über ein Suche in: Delphi-Forum, Delphi-Library PROTOKOLL machen und ausserdem das hier mal ansehen. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Minime Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Di 05.09.06 22:09 
1 ich werd mal alls überprüfen

2 @ Protokoll

tja das ist so ne sache

für mein Projekt ist deine Lösung für mich zu aufwändig, ist schon ewig her aber ich glaube du verwedest irgendwie stringlists und die verwende ich
nicht (soll ja ohne Classes, Controls etc sein -> jetzige Server größe 5 kb ;-) )

zudem ist diese Split Lösung für mich einfacher und außerdem schnell zu implementieren

jetzt nichts gegen dich aber für mich keine richtige option

außerdem hatte ich selbst schon ein entwickelt auf Stream-Basis ( Stream bestet aus Header mit infos und dem Daten Stream)

diese lösung war aber dumm da windoof irgendwie die streams ab gewissen größen teilt und dann kommen nur fragmente an und mann diese paketgröße nicht verändern :-(

3
ich hab viele meinungen gehört zu den sockets etc einige sagen, alles was man verschickt kommt an, andere wie du sind skeptischer

ich persöhnlich hatte noch nie probs damit auch bei großen strings mit über 5k zeichen ^^
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 05.09.06 22:26 
Moin!

user profile iconMinime hat folgendes geschrieben:
2 @ Protokoll

tja das ist so ne sache

für mein Projekt ist deine Lösung für mich zu aufwändig, ist schon ewig her aber ich glaube du verwedest irgendwie stringlists und die verwende ich nicht (soll ja ohne Classes, Controls etc sein -> jetzige Server größe 5 kb ;-) )

Die Stringlisten sind nicht unbedingt nötig, das geht auch anders. Es geht mir auch mehr um das Prinzip und die Techniken, die ich da so vorstelle, als um den konkreten Code. ;)

user profile iconMinime hat folgendes geschrieben:
zudem ist diese Split Lösung für mich einfacher und außerdem schnell zu implementieren

...und leider deshalb im allgemeinen falsch. :? Was passiert wohl, wenn dein Trennzeichen in der Ausgabe des Kommandos auftaucht (z.B. in einem Dateinamen)? :shock: Weiterhin: du verwendest das '#' als Trennzeichen, nicht als Terminatorzeichen, das wird Probleme geben... :|

user profile iconMinime hat folgendes geschrieben:
jetzt nichts gegen dich aber für mich keine richtige option

Es ist mir letztlich egal, ob du etwas aus meinen Vorschläge machst; wenn dein Code funktioniert, ist doch alles prima. ;) Wenn nicht, dann solltest du allerdings vielleicht doch noch mal in dich gehen... :mrgreen:

user profile iconMinime hat folgendes geschrieben:
diese lösung war aber dumm da windoof irgendwie die streams ab gewissen größen teilt und dann kommen nur fragmente an und mann diese paketgröße nicht verändern :-(

Genau dieses Problem wird im Protokoll-Tut gelöst. :zwinker:

user profile iconMinime hat folgendes geschrieben:
3
ich hab viele meinungen gehört zu den sockets etc einige sagen, alles was man verschickt kommt an, andere wie du sind skeptischer

ich persöhnlich hatte noch nie probs damit auch bei großen strings mit über 5k zeichen ^^

Du hast mich vermutlich falsch verstanden, ich habe nichts gegen die Sockets; und ich habe auch keine Probleme damit (im Gegenteil, ich finde diese Kompos [für didaktische Zwecke] ausgesprochen gut!). Weiterhin: ich bin mir sicher, dass die Sockets keine Daten "verlieren", ich bezweifle, ob du sie richtig verarbeitest... :D Deshalb die Ausgabe. ;)

Aber du bist ja schon groß und kannst die Probleme sicher auch alleine lösen, hast ja jetzt genug Ansätze beisammen. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Minime Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Di 05.09.06 22:28 
:P :P :P :P :P :P ich krieg mich nicht mehr!



buffer := execconsole('C:\test.bat'); // evtl. auch mal 'cmd /c c:\test.bat' oder direkt 'cmd /c dir'
buffer := 'Shell#' + buffer !!!!!!!!!!!!!!!!!!!!!! + '#' !!!!!!!!!!!!!!!!!!!!!!!!;
ShowMessage(buffer);
Socket.SendText(buffer);

thnx narses & TGR ihr beide wart wunderbar! :D
Minime Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Di 05.09.06 22:31 
PS
Zitat:

Aber du bist ja schon groß und kannst die Probleme sicher auch alleine lösen, hast ja jetzt genug Ansätze beisammen. ;)


entdecke ich da eine gewisse ironie ? ;-)

naja nicht böse sein
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 05.09.06 22:31 
Moin!

Sorry, aber das Problem hier bleibt weiter... ;)
user profile iconNarses hat folgendes geschrieben:
user profile iconMinime hat folgendes geschrieben:
zudem ist diese Split Lösung für mich einfacher und außerdem schnell zu implementieren

...und leider deshalb im allgemeinen falsch. :? Was passiert wohl, wenn dein Trennzeichen in der Ausgabe des Kommandos auftaucht (z.B. in einem Dateinamen)? :shock:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Minime Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Di 05.09.06 22:51 
also entweder nimmt man dein protokoll oder mann nimmt eben ein trennzeichen das zum anlass passt (zb '|' für dateinamen etc;-)

oder man giebt die länge der abschnitte im string an und copier diese eben raus

zb Shell#length(output)#O##U##T##P##U##T#
und kopiert das dann eben über move oder sonsteeinen befehl dann raus

TGR ist der der mir im anderen thread geholfen hat
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 05.09.06 22:57 
Moin!

user profile iconMinime hat folgendes geschrieben:
also entweder nimmt man dein protokoll

Es ist gar nicht mein Protokoll, sondern eine grundlegende Idee oder Vorgehensweise. ;) Ich erhebe keinen Anspruch darauf (nur auf mein Tut). :D

user profile iconMinime hat folgendes geschrieben:
oder mann nimmt eben ein trennzeichen das zum anlass passt (zb '|' für dateinamen etc;-)

Es muss nicht "zum Anlass" passen, sondern darf vielmehr nicht in der Datenmenge auftauchen! :shock: :mahn: Du hast völlig richtig erkannt, dass es egal ist, welches Zeichen das ist. ;)

user profile iconMinime hat folgendes geschrieben:
thnx narses & TGR ihr beide wart wunderbar! :D

Schön, wenn ich dir helfen konnte. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.