![]() |
TClientSocket/Server - Befehl senden mit edit text Speech???
Hi !
ich arbeite an nem kleinen Speech-Chat (er arbeitet mir dem Microsoft Sam Speech System). Ich arbeite mir TClientsocket und TServerSocket. also wenn ich die funktion alleine aufrufen will dann mach ich das so (ich gib mal nich den ganzen quelltext ein, sondern nur das worauf es ankommt...) : BEIM CLIENTEN : Connecten :
Delphi-Quellcode:
if ClientSocket1.Active = False then
begin ClientSocket1.Host := Edit1.Text; ClientSocket1.Port := 1533; ClientSocket1.Active := True; Button1.Caption := 'Trennen'; end else begin ClientSocket1.Active := True; ClientSocket1.Close; Button1.Caption := 'Verbinden'; end Befehl Senden:
Delphi-Quellcode:
ClientSocket1.Socket.SendText('Speech');
BEIM SERVER:
Delphi-Quellcode:
if MyString = 'Speech' then
oleVoice := CreateOLEObject('SAPI.SpVoice'); oleVoice.Speak('Hello World!', 0); //usw.... MEINE EIGENDLICHE FRAGE: wie kann ich das ganze realisieren, dass nicht nur der Befehl gesendet wird, sondern auch der Text aus Edit1 ? also z.b. so :
Delphi-Quellcode:
und das aller wichtigste :
ClientSocket1.Socket.SendText('Speech' + Edit1.Text); // GEHT ABER IT !!!!!
WIE MUSS DER SERVER DANN DARAUF REAGIEREN ??? :wall: :wall: :wall: ich hoffe ich konnte es so verständlich wie möglch erklären... DANKE !!!!!!!!!! [edit=Chakotay1308][delphi]-Tags gesetzt. Nächstes Mal bitte selber machen. Mfg, Chakotay1308[/edit] |
DP-Maintenance
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Internet / IP / LAN" verschoben.
Kein Tipp für die Code-Library |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
Hi,
die Sparte Neuen Beitrag zur Code-Library hinzufügen ist nur für nützliche Tipps, die in unsere Code-Sammlung - genannt Code-Library - sollen. Außerdem haben wir hier praktische [ delphi][ /delphi]-Tags. Bitte nutze die um deinen SourceCode lesbarer zu machen. Zu deinem Problem: dein Schritt, den du am Ende deines Beitrags geschrieben hast, ist schon ganz gut. Du solltest dir überlegen, wie übermittelst du sowohl Text, als auch den Befehl. Angenommen du schickst nicht "Speech" und dann direkt den Text, sondern zum Beispiel "Speech:Hier kommt der Text". Dann könntest du mit Hilfe von ![]() ![]() Hoffe das hilft, Chris |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
:gruebel: hä ?
sry aber des hab ich it so ganz verstanden...könntest du mir vielleicht n kleines Beispiel posten ? Dankeschön ! PS : Sorry wegen den Tags......... |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
Hi,
also... Bisher sendest du so den Text:
Delphi-Quellcode:
Du könntest zum Beispiel so den Text senden und den Befehl senden:
ClientSocket1.Socket.SendText('Speech');
Delphi-Quellcode:
Dann musst aber aufpassen, dass du auch die if-Abfrage änderst. Dazu
ClientSocket1.Socket.SendText('Speech:' + Edit1.Text);
![]() ![]() Die könnte dann zum Beispiel so aussehen:
Delphi-Quellcode:
Chris
if Pos('SubStr:', MyString) = 1 then begin
// hantiere hier mit Copy herum... oleVoice := CreateOLEObject('SAPI.SpVoice'); oleVoice.Speak(MyString, 0); end; |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
sry und wahrscheinlich ist die Frage total dumm, aber wie soll ich mit dem "copy" herumhanieren???????
:confused: Bin einfach zu blöd dafür ! :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
Hi,
guck' dir in der Hilfe mal an, was Copy macht. Du sollst mit der Funktion versuchen den Teil, den du nicht ausgeben willst (in diesem Fall Speech:) herauszuschneiden, bzw. alles andere des Strings in einen anderen packen. Beispiel:
Delphi-Quellcode:
sInput := '111Dies ist ein String';
sOutput := Copy(sInput, 3, length(sInput); ShowMessage(sOutput); // sollte "Dies ist ein String ausgeben" Chris |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
des geht au it !!!!!!!!!!!!!
ich müsste zu dem auch noch wissen, wie man z.b. ein programm starten kann, dass man zuvor per edit1 festgelegt hat, also z.b. : [/delphi]ClientSocket1.Socket.SendText('run' + Edit1.Text); und der server muss dann so reagieren (GEHT ABA IT !!!!!) : [delphi]if MyString = 'run' then ShellExecute(0, Nil, PChar('Edit1.Text'), Pchar(''), Pchar(''), SW_NORMAL); genau da scheiterts bei mir !!! und das mit der Speech muss doch ähnlich gehen ??????????????????????? man ich werd langsam nervös ! :bouncing4: :bouncing4: :bouncing4: :bouncing4: :bouncing4: |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
kann mir keiner helfen ?
Bitte ! |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
1.) Pushen ist erst ab 24 Stunden nach dem letzten Beitrag erlaubt.
2.) Dir wurden schon recht viele Tips gegeben, schau doch mal in die OH. 3.) Zu der Sache mit dem Run:
Delphi-Quellcode:
Ungetestet, müste aber gehen.
[...]
MyString:=Socket.ReceiveText; if (copy(MyString,1,3)='run') then Delete(MyString,1,3); Shellexecute(0,Nil,PChar(MyString),PChar(''),PChar(''),SW_NORMAL); |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
oh mann ! ich bin halt irgendwie zu blöd...aber vielleicht hab ichs auch einfach nur schlecht beschrieben...
naja, wie auch immer...hier ist der source code ! ![]() PS: kein scheiss bauen und biddö nicht sagen, dass ihr es geschrieben hättet oder so.... |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
CLIENT:
Delphi-Quellcode:
SERVER:
// SENDEN von Strings
procedure TfrmMain.SendString(Cmd, Param1, Param2: String ); var FullCmd: String; begin FullCmd := Cmd + '¬' +Param1+ '¬' +Param2+ '¬'; if ClientSocket1.Socket.Connected then begin ClientSocket1.Socket.SendText( FullCmd ); end else begin ShowMessage('you are not connected!'); end; end; // READ STRINGS procedure TfrmMain.ClientSocket1SockRead(Sender: TObject; Socket: TCustomWinSocket); var Data, Cmd, Param1, Param2: String; begin Data := Socket.ReceiveText; //- Cmd := Copy(Data, 1, Pos('¬', Data) -1); Delete(Data, 1, Pos('¬', Data)); //- Param1 := Copy(Data, 1, Pos('¬', Data) -1); Delete(Data, 1, Pos('¬', Data)); //- Param2 := Copy( Data, 1, Pos('¬', Data) -1); Delete(Data, 1, Pos('¬', Data)); //- if Cmd = 'Test' then begin MessageBoxA(Handle, pChar(Param1), pChar('Client'), MB_ICONINFORMATION); end; .. .. end; // SENDEN von Befehlen procedure TfrmMain.Button1Click(Sender: TObject); begin // Sende Text aus Edit1 im Befehl 'Test' SendString('Test', Edit1.Text, ''); end;
Delphi-Quellcode:
du müsstest den code oben einfugen [ natürlich ohne dem test etc.. ]
// STRING Senden
procedure TfrmMain.SendString( Socket: TCustomWinSocket; Cmd, Param1, Param2: String ); var FullCmd: String; begin FullCmd := Cmd + '¬' +Param1+ '¬' +Param2+ '¬'; Socket.Sendtext( FullCmd ); end; // EMPFANGEN procedure TfrmMain.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var Data, Param1, Param2: String; Cmd: Integer; begin Data := Socket.ReceiveText; //- Cmd := Copy(Data, 1, Pos('¬', Data) -1); Delete(Data, 1, Pos('¬', Data)); //- Param1 := Copy(Data, 1, Pos('¬', Data) -1); Delete(Data, 1, Pos('¬', Data)); //- Param2 := Copy( Data, 1, Pos('¬', Data) -1); Delete(Data, 1, Pos('¬', Data)); //- if Cmd = 'Test' then begin ShowMessage('Gesendeter Text: ' + Param1); SendString(Socket, 'Test', 'Text ist angekommen...', ''); // So Sendet der Server befehle [ od. Antworten ] end; .. .. end; und dein code würde zb. so aussehen
Delphi-Quellcode:
// Client #######
// Button1.Click: SendString( 'Speech', Edit1.Text, '' ); // Param2 ist unnötig // Server ####### // On Read: if Cmd = 'Speech' then begin oleVoice := CreateOLEObject('SAPI.SpVoice'); oleVoice.Speak('Hello World!', 0); // usw... end; |
indy TCP spezieller Befehl mit Edit
hi !
sorry für den Doppelpost, aber ich bin halt noch neu hier im Forum...außerdem dachte ich, es wär sinnvoll, weil wenn man nun über die Suche geht findet man nur TClientSocket, obwohl mein neues Problem ja was mit indy TCP zu tun hat... hmmm.......naja. also: ich hab das ganze mal mit den indy kompos gemacht : CLient sendet was:
Code:
Server reagiert:
Client.WriteLn('opencd');
Code:
aber auch bei diesen Komponenten stellt sich die Frage, wie man da lösen kann, dass der User mit einem Edit einstellen kann, in z.b. welchem intervall das ganze geschieht...oder bei dem Speech eben mit welchem Text...
If Command = 'opencd' then mciSendString('Set cdaudio door open wait', nil, 0, handle);
bin für jede Hilfe dankbar !!!!!!!!!!!!! |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
wofür muss der server bei einem Speech Chat das tray des CD-Laufwerks öffnen? was soll das für ein komisches programm werden? trojaner?
|
Re: indy TCP spezieller Befehl mit Edit
Zitat:
|
Re: indy TCP spezieller Befehl mit Edit
Zitat:
|
Re: TClientSocket/Server - Befehl senden mit edit text Speec
was für eine nervige Art ? komisch...
auf jeden Fall sorry, wenn ich jemanden genervt habe...tut mir leid ! des soll kein Trojaner werden, sondern ein Remote Control Tool, bei dem der User jeder Zeit abbrechen kann. das mit dem Timer war ja auch nur ein Beispiel... mir gehts eher um das mit dem Edit.Text.............weil ich nicht nur ein paar Knöpchen drücken will, sondern halt z.b. bei dem Problem mit dem Speech selber vom clienten aus bestimmen möchte, was gesagt werden soll.... wiedermal vielen Dank im Voraus... das Forum ist echt saugeil ! |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
Gib allen deinen Befehlen eine Zahl, z.B. speech=001 cd öffnen=002 cd schließen=003...
Dann sende z.B. 002 und das CD-Laufwerk öffnet sich. (nachdem der Server "002" ausgewertet hat.) Wenn du dann mitsenden willst, was der Computer bei 001 sagen soll, hänge doch an 001 einfach den Text an. Beispiel: 001+Edit1.Text Der Server schneidet 001 weg und hat den Text, den er sagen soll. PS: Bitte erkläre doch mal, wofür man mit einem Remote Control Tool das CD-Laufwerk öffnet. Damit jemand eine CD einlegen kann? Dann kann er es doch gleich selbst öffnen :stupid: |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
das mit dem cd-rom war ja auch nur en beispiel....danke !!!!!!!!!!!!!!!
aber kennt jemand von euch tutorials oder links dazu, um zu lernen, wie man das dann wegschneiden kann? Gruß Xeon |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
|
Re: TClientSocket/Server - Befehl senden mit edit text Speec
Danke Leute !!!
DIESES FORUM ROCKT !!! PS: sorry wenn ich in meinem Beitrag manchmal zu "nervend" war ! ich hab euch alle lieb *fg* :twisted: :twisted: :twisted: THX Leudde ! :cheers: :cheers: :cheers: :cheers: :cheers: :cheers: :hello: :hello: :hello: :hello: :hello: :hello: :hi: :hi: :hi: :hi: :hi: :hi: :hi: :hi: :hi: |
Re: TClientSocket/Server - Befehl senden mit edit text Speec
Zitat:
|
Re: TClientSocket/Server - Befehl senden mit edit text Speec
ok...sry werd ich mir merken :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz