AGB  ·  Datenschutz  ·  Impressum  







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

Dateigröße in Bytes aus Blob auslesen

Ein Thema von semo · begonnen am 6. Dez 2011 · letzter Beitrag vom 7. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#1

Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 22:04
Delphi-Version: 2010
Guten Abend,

ich steh gerade etwas auf dem Schlauch: ich muss Dateigrößen aus einem Blob auslesen.

Ich weiß, dass aus Hex
00 00 00 00 B7 86 44 41
2.690.414 Bytes herauszulesen sind.

Und ich weiß, dass in dem HEX-Wert
00 00 00 80 B7 86 44 41
2.690.415 Bytes herauszulesen sind.

Die beiden Werte habe ich durch Tests mit 2 Dateien ermittelt, deren Dateigröße ich kenne. Diese wurden in dem Blob hinterlegt.

Nur wie liest man die Dateigröße aus dem Blob nun wieder korrekt aus?
  Mit Zitat antworten Zitat
egentur

Registriert seit: 27. Sep 2006
Ort: Freising
60 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 22:32
Hi Semo
kommt auf die DB an
bei Oracle

select length(MyBlobfield) as BlobSize from MyTable

Gruß
egentur
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 22:41
Im Blob selbst sind weitere Daten wie Dateiname etc. vorhanden.
Es kommt nur darauf an, aus dem Hex Wert die Anzahl an Bytes auszulesen.
Der Datenbankhintergrund kann völlig außer Acht gelassen werden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 22:41
Code:
2690415= $00290D6F                101001000011010110111 1
$414486b7 80000000     01000001010001001000011010110111 10000000000000000000000000000000

                        3333333322222222111111110000000 0
                       77777777666666665555555544444444 33333333222222221111111100000000

2690414= $00290D6E                101001000011010110111 0
$414486B7 00000000     01000001010001001000011010110111 00000000000000000000000000000000
Eventuell fällt dir ja ein Muster auf?

Das Teil als LitleEndian Int64 auslesen, ein bissl Bitschifting (SHR) und dann noch 'ne Maske (AND) drüber, um die zusätlichen Datenbits loszuwerden


Durch die je 3 bösen Einsen würde ich aber so auf maximal mögliche 4 MB für die Dateien kommen.
Müßte man mal noch mehr Testdaten haben, mit "viel" größeren und kleineren Dateien. (z.B. halb/doppelt so Großen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 6. Dez 2011 um 22:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 22:45
TBlobstream und Size ?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 6. Dez 2011 um 23:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 23:14
Ich habe weitere Dateien getestet:

1 byte große Datei ergab:
00 00 00 00 00 00 F0 3F

2.096.777 byte große Datei ergab:
00 00 00 00 89 FE 3F 41

eine doppelt so große Datei (4.193.554 bytes) ergab:
00 00 00 00 89 FE 4F 41

8.387.108 bytes
00 00 00 00 89 FE 5F 41

16.774.216
00 00 00 00 89 FE 6F 41

Geändert von semo ( 6. Dez 2011 um 23:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 23:39
Noch eine Datei im Kilobytebereich wäre wohl ganz praktisch, aber bis jetzt zeigt sich schonmal ein böses Schema.

Die 11 höchsten Bits sind irgendwelche "Steuerinfos" und deine gewünschter Wert wird wohl so verschoben, daß das höchste gesetzte Bit bis dort ranverschoben wurde.
Man weiß also wo genau die gesuchten Bits anfangen (eigentlich aufhören), aber bis wo hin es geht, ist nicht erkennbar (kein direkter Marker vorhanden).
Und auch aus den 11 Bits kann man nix auslesen, denn z.B. 01000001010 kommt bei unterschiedlich langen Bitfolgen vor, wobei beim Letzten Wer auch noch ein Bit gedreht ist.

Wenn ich mich jetzt nirgendwo vertippt, verrechnet oder verkopiert hab, also die Werte stimmen, dann war's das wohl, da zwar (fast) alle Bits deiner Zahl vorhanden und sogar uncodiert sind, aber ohne ein erkennbares Ende kann man damit nix anfangen.

Code:
                        3333333322 222222111111110000000 0
                       77777777666 666665555555544444444 33333333222222221111111100000000

2690415= $00290D6F                101001000011010110111 1
$414486b7 80000000     01000001010 001001000011010110111 10000000000000000000000000000000

2690414= $00290D6E                101001000011010110111 0
$414486B7 00000000     01000001010 001001000011010110111 00000000000000000000000000000000 

1=      $00000001                 1
$3FF00000 00000000     00111111111 1000000000000000000000 0000000000000000000000000000000

2096777= $001FFE89                 111111111111010001001
$403FFE89 00000000     01000000001 1111111111110100010010 0000000000000000000000000000000

4193554= $003FFD12                 1111111111110100010010
$414FFE89 00000000     01000001010 0111111111110100010010 0000000000000000000000000000000

Edit > blöde Codeausrichtung ... also besser meinen Beitrag zitieren und dort drin nachsehn
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 23:42
ich glaube ich habe es, kranke Idee ...

jepp, definitiv Double ....

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
 //s1:AnsiString=#$00#$00#$00#$00#$89#$FE#$3F#$41;
 //s1:AnsiString=#$00#$00#$00#$00#$00#$00#$F0#$3F;
 s1:AnsiString=#$00#$00#$00#$00#$89#$FE#$6F#$41;
var
 i:Double;
begin
 move(s1[1],i,8);
 Showmessage(FloatToStr(i));
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 6. Dez 2011 um 23:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 23:48
Das wäre ja zu einfach
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Dateigröße in Bytes aus Blob auslesen

  Alt 6. Dez 2011, 23:50
3 Vergleiche sollten als "Beweis" genügen ?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:44 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