Große Dateien hex viewen



  • Hallo,

    ich brauch mal einen Denkanstoß. Ich möchte mir eine Funktion zum Hex-Viewen von Dateien basteln (später Hex-Editor) und weiß nicht genau wie ich da vorgehen muß. Ich hab mich für ein Memofeld + searatem ScrollBar entschieden und lese bei jedem Click auf den ScrollBar 256 Zeichen. Das hat natürlich bei großen Dateien den Nachteil, dass ich die Werte nicht mehr im ScrollBar adressieren kann. Wenn ich den ScrollBar prozentual darstelle, dann bekomme ich bei großen Dateien und einem Click (1%) mehr Daten (>256) als ich in meinem Memofeld darstellen kann.

    Wie programmiert man so was, ist da ein Memofeld richtig oder besser ListBox etc., und wie kann ich über einen eigenen ScrollBar alle Daten einer z.B. 1 GB großen Datei oder größer, Zeile für Zeile im Memofeld darstellen ?

    Danke für eure Hilfe und Gruß

    WoWe



  • Ich würde die Min-Max-Werte und TScrollBar::Position mal genauer anschauen sowie den Change-event benutzen.

    -junix



  • Den Change Event benutze ich schon, aber mit Max und Position von TScrollBar (int) komme ich nicht an Dateien > 2 GB ("oder größer") heran.



  • Mal realistisch betrachtet: kommen überhaupt Dateien > 2GB zum Zug?

    im Übrigen... theoretisch könntest du 4GB -Dateien verarbeiten. allerdings müsstest du dann den integer nach unsigend integer konvertieren.

    -junix



  • @WoWe: Wenn du mit dem Programm fertig bist..., kannst du mir dann bescheid geben? Sowas könnte ich gut gebrauchen.



  • @junix:

    kommen überhaupt Dateien > 2GB zum Zug?

    Ja kommen. Ich benutze einen Parser für Rasterdateien großer Farbdrucker (60''). Über einen Postscript-RIP im Kachelmodus können bei 600 dpi Ausgabedateien von 3 - 4 GB heraus kommen. Ich möchte in diesen Parser eine Möglichkeit zum Hex-Viewen einbauen. Im Prinzip reicht mir ja der Dateianfang und das Dateiende, aber bei kleineren Dateien sollte man dann auch die Datei komplett anschauen/durchschieben können.

    Wie funktioniert das mit dem konvertieren von int nach uint für TScrollBar.

    @WebFritzi: Na klar. Wenn ich's denn hinbekomme 🕶



  • Hi WoWe

    Warum zaehlst Du nicht im ScrollBar nur die Bloecke (zu je 256 Byte)?
    Dann kommst Du bis ca 2GB * 256 = 512 GByte, das wird wohl reichen!

    Die Einzelbytes im Memo kannst Du ja extra Zaehlen = Position im Block.

    Im Memo sind doch die Daten zu 8 oder 16 Byte pro Zeile angeordnet?

    Selbst wenn Du die ScrollBar Zeilenweise blockst, kommen noch ca 16GB oder 32 GB zusammen!



  • Hi DerAltenburger,

    danke für deinen Tip. Das mit dem Blöcke zählen hört sich gut an. Manchmal sieht man den Wald vor lauter Bytes nicht 😃



  • Ist aber doof, wenn man z.B. mal die letzte Zeile des einen und die erste Zeile des nächsten Blockes untereinander sehen will. Ist nur ein kleiner Einwand. Ansonsten finde ich diesen Ausweg sehr gut.



  • Das ist der Haken!

    ???????????

    Man koennte ja in 'nen Puffer die Doppelte Anzahl 'Zeilen' lesen und mit nem extra Zeilenoffset im Memo Zeilen fuer einen Block anzeigen?

    Ist etwas komplizierter zu handhaben???


Anmelden zum Antworten