AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Int64 spinnt oder ich. HILFE!!!!
Thema durchsuchen
Ansicht
Themen-Optionen

Int64 spinnt oder ich. HILFE!!!!

Ein Thema von Papaschlumpf73 · begonnen am 5. Nov 2024 · letzter Beitrag vom 8. Nov 2024
Antwort Antwort
Seite 2 von 4     12 34      
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#11

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 6. Nov 2024, 10:33
Ich habe nur Delphi 11 hier. Habe mich ein bisschen durch die Sourcen gegraben. Sieht so aus als wenn es 3 Methoden gibt mit denen intern umgewandelt wird. Interessant wäre es zu sehen was wirklich im fall des Fehlers genommen wird.
Aber, das ist eigentlich ein Fall für Emba, denn egal wie, es sollte immer der gleiche Wert rauskommen.
Meine Anwendung wird auch noch mit 11.3 kompiliert. Da kommt derselbe Unsinn raus, wie bei 12.1.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 6. Nov 2024, 11:49
Was passiert wenn man AsLargeInt nutzt?

https://docwiki.embarcadero.com/Libr...eld.AsLargeInt
https://docwiki.embarcadero.com/Libr...ta.DB.Largeint
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 6. Nov 2024, 11:51
Delphi-Quellcode:
function TLargeintField.GetValue(var Value: Largeint): Boolean;
begin
  Result := GetData(FIOBuffer);
  if Result then
    Value := TDBBitConverter.UnsafeInto<Int64>(FIOBuffer);
end;
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#14

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 6. Nov 2024, 12:24
AsLargeInt funktioniert nur mit TFields. Unsere Fields sind aber irgendeine Vorstufe davon - OLEVariant-Irgendwas. Daher haben wir auch keinen richtigen Fieldtype sondern nur Fields[0].Type_ = adBigInt - also ADO Data Types. Insbesondere in Threads lässt es sich so viel einfacher programmieren, wenn man nicht immer erst neue TFields erstellen muss.
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#15

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 6. Nov 2024, 13:17
Fehler ist jetzt gemeldet: https://embt.atlassian.net/servicede...tal/1/RSS-2285
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 6. Nov 2024, 17:20
Wenn du nun irgendweche Vorstufen nutzt, dann glaube ich nicht das Emba das hierfür auch "nachimplementiert".

Kannst du nicht einen Helper implementieren, der diese AsLargInt (oder AsInt64) bereit stellt?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 6. Nov 2024, 18:01
$914800050C81C3F9
$914800050C81C400

Die Art der Änderung sieht auch komisch aus.
Was man sonst so für Probleme kennt, scheint es hier nicht zu sein (gedrehtes Bit, abgeschnittene Bytes, ...)


Passiert es hier auch?
Delphi-Quellcode:
var A, B: Int64; C: String; V: Variant;
begin
  A := -7978126718202166279;
  V := DM.ADOCon.Execute('SELECT CAST(-7978126718202166279 as bigint)').Fields[0].Value;
  B := Int64(V);
  C := VarToStr(V);
  Memo1.Lines.Append('A: ' + A.ToString);
  Memo1.Lines.Append('B: ' + B.ToString);
  Memo1.Lines.Append('C: ' + C);
end;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#18

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 6. Nov 2024, 18:26
Und mit "VarAsType(..., varInt64);" anstatt "Int64(...);" ?
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#19

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 7. Nov 2024, 08:28
$914800050C81C3F9
$914800050C81C400

Die Art der Änderung sieht auch komisch aus.
Was man sonst so für Probleme kennt, scheint es hier nicht zu sein (gedrehtes Bit, abgeschnittene Bytes, ...)


Passiert es hier auch?
Delphi-Quellcode:
var A, B: Int64; C: String; V: Variant;
begin
  A := -7978126718202166279;
  V := DM.ADOCon.Execute('SELECT CAST(-7978126718202166279 as bigint)').Fields[0].Value;
  B := Int64(V);
  C := VarToStr(V);
  Memo1.Lines.Append('A: ' + A.ToString);
  Memo1.Lines.Append('B: ' + B.ToString);
  Memo1.Lines.Append('C: ' + C);
end;
Ergebnis:
A: -7978126718202166279
B: -7978126718202166272
C: -7978126718202166279
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#20

AW: Int64 spinnt oder ich. HILFE!!!!

  Alt 7. Nov 2024, 08:33
Und mit "VarAsType(..., varInt64);" anstatt "Int64(...);" ?
Funktioniert leider auch nicht. Ich habe das Beispiel mal erweitert:
Delphi-Quellcode:
var A, B, D, E: Int64; C: String; V: Variant;
begin
  A := -7978126718202166279;
  V := ADOCon.Execute('SELECT CAST(-7978126718202166279 as bigint)').Fields[0].Value;
  B := Int64(V);
  C := VarToStr(V);
  D := V;
  E := VarAsType(V, varInt64);
  Memo1.Lines.Append('A: ' + A.ToString);
  Memo1.Lines.Append('B: ' + B.ToString);
  Memo1.Lines.Append('C: ' + C);
  Memo1.Lines.Append('D: ' + D.ToString);
  Memo1.Lines.Append('E: ' + E.ToString);
end;
A: -7978126718202166279
B: -7978126718202166272
C: -7978126718202166279
D: -7978126718202166272
E: -7978126718202166272
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 20:02 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