AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Invalid variant operation

Ein Thema von Test0r79 · begonnen am 10. Apr 2008 · letzter Beitrag vom 10. Apr 2008
Antwort Antwort
Test0r79

Registriert seit: 10. Apr 2008
4 Beiträge
 
#1

Invalid variant operation

  Alt 10. Apr 2008, 20:56
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] = 'Jathen
        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
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Invalid variant operation

  Alt 10. Apr 2008, 21:00
Hallo erstmal und Willkommen in der

hier gibt es eine Suchfunktion..da findest Du sicher den Fehler in Deiner Anwendung Hier im Forum suchenexcel worksheets
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Test0r79

Registriert seit: 10. Apr 2008
4 Beiträge
 
#3

Re: Invalid variant operation

  Alt 10. Apr 2008, 21:17
Danke fürs Hallo sagen

Also mit deinem Tip hast mich ja fast direkt zu der folgenden Zeile geführt: Excel.Worksheets[InttoStr(Nachricht.Kundennr)].Activate; jedoch finde ich nichts was in der Richtung einen fälschlichen Sinn ergibt, so wie ich es geschrieben habe.
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Invalid variant operation

  Alt 10. Apr 2008, 21:23
Zitat von Test0r79:
Danke fürs Hallo sagen

Also mit deinem Tip hast mich ja fast direkt zu der folgenden Zeile geführt: Excel.Worksheets[InttoStr(Nachricht.Kundennr)].Activate; jedoch finde ich nichts was in der Richtung einen fälschlichen Sinn ergibt, so wie ich es geschrieben habe.
Ihr muesst auch mal weiterlesen und besonders intensiver ....OLE Excel
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Test0r79

Registriert seit: 10. Apr 2008
4 Beiträge
 
#5

Re: Invalid variant operation

  Alt 10. Apr 2008, 21:35
Also workbook und worksheet sind ja schon vorhanden. Es wird sozusagen an der vorhanden Tabelle weitergeschrieben...

aber wenn ich es so wie dort beschrieben versuche:
Excel.Sheets[Nachricht.Kundennr].Cells[2+Einträge,2].Value := IntToStr(Einträge+1); bekomme ich nur die volle Ladung an excessviolations im OLE string support. Auch ist Excel richtig eingebunden.
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Invalid variant operation

  Alt 10. Apr 2008, 21:43
Zitat von Test0r79:
Also workbook und worksheet sind ja schon vorhanden. Es wird sozusagen an der vorhanden Tabelle weitergeschrieben...

aber wenn ich es so wie dort beschrieben versuche:
Excel.Sheets[Nachricht.Kundennr].Cells[2+Einträge,2].Value := IntToStr(Einträge+1); bekomme ich nur die volle Ladung an excessviolations im OLE string support. Auch ist Excel richtig eingebunden.

Die Anzahl der Eintraege in einer Excel Tabelle solltest Du mit OLE auslesen!

Es gibt noch andere Hilfen fuer OLE mit Excel..siehe Hier im Forum suchenOLE Excel in 5 Minuten ist so ein Projekt nicht zu loesen.
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Test0r79

Registriert seit: 10. Apr 2008
4 Beiträge
 
#7

Re: Invalid variant operation

  Alt 10. Apr 2008, 21:52
Delphi-Quellcode:
24   Eintrag ID   Zeit   Absender   Betrag   Guthaben
   1   00:00   Server   0   100
   2   12:00   Supermarkt   14,00   86,00
   3   12:00   Supermarkt   11,00   75,00
   4   12:00   Supermarkt   11,00   64,00
so ist die Tablle aufgebaut, wobei ich nun nicht verstehe, warum ich die Einträge zählen sollte, wenn ich oben link die aktuelle Zeilenzahl "mitlaufen" lass um diese dann zu beschreiben. Ich greife ja nicht auf eine Zelle zu die nicht vorhanden ist...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz