Avatar billede robertmp Nybegynder
25. maj 2007 - 09:32 Der er 2 kommentarer

Variant konvertering

Jeg lavede for godt en måned siden et program som henter en masse fra OPC protokollen. Her modtages alt som typen variant og jeg skal derfor selv sørge for at få det lavet om til alm. datatyper.
Dette gik fint og programmet har kørt uden problemer i snart en måned. Men igår morges gik det så galt. Intet virker mere! (har ikke rørt source koden)
Jeg har checket det som sendes til mig via OPC. Det er som det plejer.
Jeg slår exception handling til og kan se det er datatype konverteringen som fejler. Men kun på integers og doubles. Strings kører stadig fint.

I min kode smider jeg bare vartyperne over i andre variabler:
if vartype=integer;
minInteger := variant;
if vartype=double;
minDouble := variant;

Men som sagt. Det går galt nu. Nogen der har en ide om hvad det kan være eller har haft lignende oplevelser?
Avatar billede hrc Mester
25. maj 2007 - 10:31 #1
Jeg har oplevet det samme i når jeg arbejder med tabeller. Pludseligt fejler Value og jeg må bruge AsInteger (bruger ikke ADO endnu).

Har du mulighed for at typecaste værdierne før du banker dem over i en variant?
Avatar billede hrc Mester
25. maj 2007 - 10:40 #2
Noget i retning af dette

procedure TForm1.ButtonClick(Sender: TObject);
var
  i : integer;
  f : double;
begin
  case VarType(v) of
    varSmallint,
    varInteger,
    varShortInt,
    varByte,
    varWord,
    varLongWord,
    varInt64,
    varSingle    : i := integer(v);
    varBoolean  : integer(boolean(v));
    varDouble,
    varCurrency,
    varDate      : f := double(v);
  end;
end;

I øvrigt, "du slår exception-handling til" - Det er da altid slået til er det ikke?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester