Einzelnen Beitrag anzeigen

fran

Registriert seit: 4. Nov 2005
38 Beiträge
 
Delphi 6 Personal
 
#1

Problem mit case-of Anweisung in ClientSocket1Read

  Alt 4. Nov 2005, 20:10
Hallo Leute,

ich programmiere da gerade für ein Projekt an meiner Uni eine Client/Server Anwendung und da gibt es die eine Stelle im noch nicht fertigen Programm, die mich rätzeln läßt. Und zwar habe ich eine GUI mit mehreren Buttons. Je nachdem welcher Button gedrückt wird, erhält die globale und als public deklarierte Variable erg einen anderen Wert. Außerdem wird bei dem Klicken auf einen Button eine Nachricht an den Server geschickt, der dann je nach Nachricht ein anderes string-array zurückschickt. Bis hierher klappt auch alles wie es soll.

Jetzt komme ich zu dem Problem und zwar müssen unterschiedliche arrays beim Empfang dann auch unterschiedlich verarbeitet werden. Dazu gibt es die bereits erwähnte Variable erg, welche dann mit einem case of die unterschiedlichen "Fälle" bearbeitet. Das eigentliche Problem ist das, die untenstehende showmessage Anweisung in Fall 3 des case of aus mir nicht erklärlichen Gründen immer zweimal ausgeführt wird. Einmal mit und einmal ohne den Inhalt vom Feld edit17.

Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);

var daten: array[0..10,0..10] of string[20];

//In diesem Unterprogramm werden alle vom Server kommenden Meldungen geprüft und entsprechend verarbeitet
begin
        socket.ReceiveBuf(daten,SizeOf(daten));
        //mit Ereignisstatus prüfen, welcher Button gedrückt wurde
        case erg of
        1: showmessage('noch nicht belegt 1');
        2: showmessage('noch nicht belegt 2');
        3: begin
                edit17.Text:=daten[1,1];
                showmessage('Kontostand: ' +edit17.text);
                erg:=0;
           end;
        4: showmessage('noch nicht belegt 4');
        else showmessage('Ich weiß nicht was ich mit den Daten tun soll.')
        end;
        erg:=0;
end;
Sicher ist das für euch Experten hier kein Problem, aber ich komme einfach nicht dahinter was der Grund ist. Das komische ist, wenn ich es schrittweise ablaufen lasse, kommt die Meldung wie gewünscht nur einmal.
Vielleicht kann mir ja einer von euch weiterhelfen.

Vielen Dank für eure Hilfe sagt schon mal Fran
  Mit Zitat antworten Zitat