Einzelnen Beitrag anzeigen

TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#21

Re: [Erledigt]Totales Brett vorm Kopf: Problem mit 'end'

  Alt 13. Feb 2006, 16:01
Hallo inherited!

Ich denke, die Ergänzung es IF von engine löst Dein Problem noch nicht vollständig.

Wenn ich Deinen Code richtig interpretiere, dann soll Dein TCP_Server auf den Befehl LOGIN hin überprüfen, ob der anzumeldende User (Rest des Loginstrings) sich anmelden darf, im Erfolgsfall soll 'VER:0.1' zurückgegeben werden, andernfalls 'loginnotok'.
Um dies zu realisieren, muß Dein ursprünglicher Code wie folgt geändert werden:


[...]


Delphi-Quellcode:
else if (Command[1]+Command[2]+Command[3]+Command[4]+Command[5]) = 'LOGINthen
    begin
      OK:=true;
      for i := 0 to ListBox1.Count-1 do if Uppercase(ListBox1.Items[i])=Copy(Command, 6, Length(Command)) then OK:=false;

      if ok then
      begin
        if (Copy(Command, 6, Length(Command)) = 'HAMSTER') or (Copy(Command, 6, Length(Command)) = 'IGEL') then
        begin
          ListBox1.Items.Add(Copy(Command, 6, Length(Command)));
          AThread.Connection.WriteLn('VER:0.1');
          lbProcesses.Items.Insert(0, 'Sending Command: loginok');
        end;
// end; [b](1) hier stand die Zeile ursprünglich[/b]
    end
    else
      begin
      AThread.Connection.WriteLn('loginnotok');
    end; // [b](2) und hier muß Zeile (1) hin[/b]
      end
    else if Command[1]+Command[2]+Command[3]+Command[4]+Command[5]+Command[6] = 'LOGOUTthen
[...]

Und dann noch eine Anmerkung zu Deiner Schleife, in der Du den User gegen die Einträge einer Listbox validierst:

[...]

      for i := 0 to ListBox1.Count-1 do if Uppercase(ListBox1.Items[i])=Copy(Command, 6, Length(Command)) then OK:=false; [...]

Da hier alle Listboxeinträge durchlaufen werden, bekommst Du in OK nur die Info, ob der letzte Eintrag Deiner Listbux dem User entspricht.
Ich vermute, OK soll genau dann FALSE werden, wenn ein beliebiger Eintrag in der Listbox dem USER entspricht.
Das kannst Du folgendermaßen realisieren:

>>>>>>>>>>>>>>>>>>>>>>

Delphi-Quellcode:
      for i := 0 to ListBox1.Count-1 do
        begin
          if Uppercase(ListBox1.Items[i]) = Copy(Command, 6, Length(Command)) then
          begin
            OK := false;
            break;
          end;
        end;
<<<<<<<<<<<<<<<<<<<<<<


hoffe, Dir hilft das noch ein bißchen weiter

MfG

onlinekater

[edit=alcaeus]Delphi-Tags eingefuegt. Mfg, alcaeus[/edit]
Thomas Breitkreuz
  Mit Zitat antworten Zitat