AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird BigInt - Fehler bei Bereichsüberprüfung
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird BigInt - Fehler bei Bereichsüberprüfung

Ein Thema von Perlsau · begonnen am 4. Mär 2012 · letzter Beitrag vom 5. Mär 2012
Antwort Antwort
Perlsau
(Gast)

n/a Beiträge
 
#1

Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 4. Mär 2012, 15:27
Datenbank: Firebird • Version: 2.5 • Zugriff über: FibPlus
Moin DelphiPraxler,

in meiner Datenbank-Anwendung entsteht ein "Fehler bei Bereichsüberprüfung", wenn ich einem in der Datenbank als BigInt (20 Zeichen) deklarierten Feld einen Integerwert mit 10 Stellen zuweisen möchte. Der aktuelle Wert, bei dem Delphi meckert, ist 2.178.588.332 (die Größe einer mp4-Datei).

Dset_Datei.FieldByName('DATEIGROESSE').AsInteger := FileInfo.Size;

Liegt es möglicherweise am Parameter AsInteger, daß die Zuweisung nicht klappt. Ich habe auch bereits in den persistenten Feldern meines Datasets den DisplayWith des Feldes 'DATEIGROESSE' von 10 auf 20 gesetzt, der Fehler erscheint jedoch immer noch.
Leider gibt es ja kein AsInt64 für die Zuweisung von Werten, die größer sind als 2.147.483.647, ich kann jetzt höchstens noch versuchen, den Wert AsVariant zuzuweisen. Die Variable File.Size ist vom Typ Int64.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 4. Mär 2012, 15:35
Delphi-Referenz durchsuchenTField.AsLargeInt
.AsVariant nicht, aber es gäbe noch ein ein .Value

Du scheinst ja einer der Wenigen zu sein, welcher die Bereichsüberprüfung in den Projektoptionen auch mal aktiviert hat.
Denn sonst wäre der Fehler wohl nicht so schnell aufgefallen.



Tipp:
Gib das nächste mal Dset_Datei.FieldByName('DATEIGROESSE').As ein und schau was dir die Autovervollständigung so alles anbietet,
vorallen welche Datentypen die angebotenen Dinge haben und such dir dort etwas Passendes raus.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 4. Mär 2012 um 15:40 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 4. Mär 2012, 16:04
Gibt es bei FibPlus-Dataset leider nicht

.AsVariant nicht, aber es gäbe noch ein ein .Value
Die Version mit .AsVariant läuft gerade durch, er hat's gleich

Du scheinst ja einer der Wenigen zu sein, welcher die Bereichsüberprüfung in den Projektoptionen auch mal aktiviert hat. Denn sonst wäre der Fehler wohl nicht so schnell aufgefallen.
Keine Ahnung, wie viele Leute die Überprüfungen einschalten, ich mache das in den Debug-Einstellungen immer. Wird am Ende mit Release-Einstellung kompiliert, sind die Überprüfungen natürlich deaktiviert. So sollte man es wohl auch machen, es sei denn, man interessiert sich nicht für Laufzeitfehler ...

Tipp: Gib das nächste mal Dset_Datei.FieldByName('DATEIGROESSE').As ein und schau was dir die Autovervollständigung so alles anbietet, vorallen welche Datentypen die angebotenen Dinge haben und such dir dort etwas Passendes raus.
Danke, aber ich arbeite immer mit Autovervollständigung, schon allein, weil's schneller geht und Fehler vermeiden hilft.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 4. Mär 2012, 16:43
Nja, der Variant ist ein Typ, welcher unter Anderem einen Int64 enthalten kann, also ist das eine gute Lösung.
Abgesehn von der "unnötigen" Formatkonvertierung, falls es doch einen passenden nativen Weg gäbe.

Gibt es bei FibPlus-Dataset leider nicht
Gut, ich hätte erwartet, daß die auch auf TDataSet und damit auf TField aufsetzen. Kenn TpFIBDataSet allerding nicht.
Aber wenn dem nicht so ist.

Keine Ahnung, wie viele Leute die Überprüfungen einschalten,
Genug Probleme / Threads in der DP wären von selbst aufgefallen/gelöst, wenn mehr sowas machen würden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 4. Mär 2012, 16:55
Nja, der Variant ist ein Typ, welcher unter Anderem einen Int64 enthalten kann, also ist das eine gute Lösung.
Scheint auch zu funktionieren. Ergebnis kann ich aber erst sehen, wenn meine Anwendung die ganze 1,5 Terrabyte-Platte gescant hat, sonst müßte ich den Suchlauf abbrechen, und das möchte ich nicht. (Ich lieg eh gleich in der Wanne, bis dahin dürfte er durch sein ...)

Abgesehn von der "unnötigen" Formatkonvertierung, falls es doch einen passenden nativen Weg gäbe.
Die Formatkonfertierung stört mich im Augenblick weniger, es ist ja eh nur ein Testprogramm ...
Mir kam auch noch in den Sinn, einen String zu verwenden (unsaubere Lösung, ich weiß) oder mittels SQL-Statement zuzuweisen.

Gibt es bei FibPlus-Dataset leider nicht
Gut, ich hätte erwartet, daß die auch auf TDataSet und damit auf TField aufsetzen. Kenn TpFIBDataSet allerding nicht.
Aber wenn dem nicht so ist.
Ja, ich bin auch überrascht, da die Firma mit Firebird-Kompatibilität wirbt und dann sowas! Weißt du, ob das Dataset von AnyDac einen LargInt-Parameter kennt?

Keine Ahnung, wie viele Leute die Überprüfungen einschalten,
Genug Probleme / Threads in der DP wären von selbst aufgefallen/gelöst, wenn mehr sowas machen würden.
Daher siehst du mich auch selten hier oder in den anderen Foren Fragen stellen – das meiste fällt mir selbst auf wie z.B. heute mittag der versehentliche Zuweisungsversuch eines Strings an ein als Integer deklariertes Feld Da gab's eine Zugriffsverletzung, und ich mußte erstmal Stück für Stück meinen Code durchackern, bis ich's gefunden hatte ...
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

GELÖST: Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 4. Mär 2012, 17:34
ich kann jetzt höchstens noch versuchen, den Wert AsVariant zuzuweisen. Die Variable File.Size ist vom Typ Int64.
Mit AsVariant funktioniert die Zuweisung eines Int64 an ein Firebird-BigInt-Feld einwandfrei!
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#7

AW: Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 5. Mär 2012, 11:34
Warum verwendest du nicht .AsInt64?

Oder ist das jetzt zu einfach.
Alexander
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 5. Mär 2012, 11:37
Warum verwendest du nicht .AsInt64?
Oder ist das jetzt zu einfach.
Wenn du die Diskussion verfolgt hättest, wüßtest du, daß ich diese Frage weiter oben bereits beantwortet habe: Das gibt's bei FibPlus nicht, zumindest nicht in meiner Version für Delphi 2009.
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#9

AW: Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 5. Mär 2012, 11:59
bitte um Entschuldigung, habe ich überlesen, aber

Bei mir unter D7 + FibPlus Version 6.9.9 gibt es .AsInt64.
und in XE2 + FibPlus Version 7.2 gibt es ein .AsLarge was als Int64 definiert ist.
Alexander
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#10

AW: Firebird BigInt - Fehler bei Bereichsüberprüfung

  Alt 5. Mär 2012, 12:18
bitte um Entschuldigung, habe ich überlesen
No Problem.

Bei mir unter D7 + FibPlus Version 6.9.9 gibt es .AsInt64.
und in XE2 + FibPlus Version 7.2 gibt es ein .AsLarge was als Int64 definiert ist.
Tja, ich hab 'ne ältere Version, die auch noch andere Schwächen zeigt, z.B. Stack Overflow bei Anwendung von DoSort auf größere Tabellen (aktuell 160.000 Datensätze). Mein Test hat ergeben, daß meine alte Version nicht wirklich brauchbar 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 15:24 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