Also das ganze sieht folgendermaßen aus:
Ich schicke von eimem Client eine Nachricht los, die wird auf dem Client (zT hier zu sehen) verarbeitet &gespeichert und eine Antwort zurückgesendet. Jedoch tritt bei jedem Senden vom Client "Invalid variant operation" als Fehler auf und er führt nicht das geplante aus.
Delphi-Quellcode:
type TClientNachricht = Record
Betrag: extended;
Kundennr: Integer;
Absender: string[255];
end;
type TClientAntwort = Record
Absender: string[255];
Existent: boolean;
Abgedeckt: boolean;
Sperre: boolean;
Zeit: string[255];
Betrag: extended;
Kundennr: Integer;
end;
Delphi-Quellcode:
procedure TServer.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
var Nachricht: TClientNachricht;
Einträge: Integer;
Antwort : TClientAntwort;
begin
// Nachricht empfangen
Socket.ReceiveBuf(Nachricht, SizeOf(Nachricht));
// In Excel Tabelle eintragen
try
Excel.Worksheets[InttoStr(Nachricht.Kundennr)].Activate;
Antwort.Existent := true;
except
Antwort.Existent := false;
end;
Antwort.Abgedeckt := false;
if Antwort.Existent = true then
begin
Einträge := StrToInt(Excel.Cells[1,1]);
if StrToFloat(Excel.Cells[1+Einträge,6]) - Betrag >= 0 then
begin
// Eintragen am Server (Stringgrid
sgAktuell.Cells[0,sgAktuell.RowCount-1] := InttoStr(Nachricht.Kundennr);
sgAktuell.Cells[1,sgAktuell.RowCount-1] := FloatToStr(Nachricht.Betrag);
sgAktuell.Cells[2,sgAktuell.RowCount-1] := TimeToStr(Time);
sgAktuell.Cells[3,sgAktuell.RowCount-1] := Nachricht.Absender;
sgAktuell.RowCount := sgAktuell.RowCount+1;
//Eintrag in Excel
Excel.Cells[1,1] := IntToStr(Einträge+1);
Excel.Cells[2+Einträge,2] := IntToStr(Einträge+1);
Excel.Cells[2+Einträge,3] := TimeToStr(Time);
Excel.Cells[2+Einträge,4] := Nachricht.Absender;
Excel.Cells[2+Einträge,5] := FloatToStr(Nachricht.Betrag);
Excel.Cells[2+Einträge,6] := FloatToStr((StrToFloat(Excel.Cells[1+Einträge,6]) - StrToFloat(Excel.Cells[2+Einträge,5])));
Antwort.Abgedeckt := true;
end;
end;
if Excel.Cells[8,7] = 'Ja' then
Antwort.Sperre := true
else
Antwort.Sperre := false;
Antwort.Betrag := Nachricht.Betrag;
Antwort.Kundennr := Nachricht.Kundennr;
Antwort.Absender := 'Server';
Antwort.Zeit := TimeToStr(Time);
Socket.SendBuf (Antwort, SizeOf(Nachricht));
end;
habe im Netz auch nichts darüber gefunden was die "Invalid variant operation" genau aussagen soll.
Danke im vorraus, Test0r79