Hallo,
ich habe mir ebenen eine Function geschrieben, die eine eingehende Befehlszeile in ihre Parameter aufteilt. Als Trennzeichen dient das '#'. Der Befehel wird dann in einem Array of String in seinen einzelnen Teilen gespeichert. Das Array heißt "cmd".
Irgendwie scheint die Function oder der Teil davor nicht richtig zu arbeiten, aber ich weiß nicht woran es liegt *verzweifel*
Hier der Code:
Code:
function int_com (command : string) : integer;
var i, j : integer;
zeichen : string;
begin
result := -1;
j := 1;
zeichen := copy (command,1,2);
if zeichen = '=>' then
begin // Command for Server
zeichen := '';
for i := 3 to length (command) do
begin
if (copy (command,i,1)) = '#' then
begin
inc(j);
zeichen := '';
end
else
begin
zeichen := zeichen + copy (command,i,1);
cmd[j] := zeichen;
end;
end;
end
else
messageout(szrecv); // kein Command also ausgeben
if cmd[1] = 'pass' then result := 0;
if ( authtentification = true) then
begin
if cmd[1] = 'show' then result := 1;
if cmd[1] = 'hide' then result := 2;
if cmd[1] = 'close' then result := 3;
if cmd[1] = 'shutdown' then result := 4;
if cmd[1] = 'disconnect' then result := 5;
end;
// messagebox(hmain,PChar(cmd[2]),'',0);
end;
Aufgerufen wird die Funktion nachdem ich Daten vom Client empfangen habe:
Code:
while bThreadRunning do
begin
ZeroMemory(@szRecv, sizeof(szRecv));
recv(conSock, szRecv, sizeof(szRecv), 0);
if lstrlen(szRecv) > 0
then
begin
cmd[0] := ''; //cmd[0] = Eingehendes Command als String
for i := 0 to length(szRecv) do
cmd[0] := cmd[0] + szRecv[i];
// in Schleife zum String umwandeln
Case int_com (cmd[0]) of
0 : {Password}
begin
if cmd[2] = 'Matrix' then
begin
authtentification := true;
SendString ('Server Password Correct...');
end
else
SendString ('Password needed or Wrong!');
end;
3 : {Close}
begin
SendMessage (hmain, WM_CLOSE,0,0);
PostQuitMessage(0);
end;
...
end;
Wenn ich die Function so aufrufe, sieht es so aus, als ob die Programmteile in der Case Anweisung nicht ausgeführt werden.
Seht ihr einen Fehler (logischer Art)?
Mfg
Salomon