Announcement

Collapse
No announcement yet.

Binary Feld in Datenbank

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Binary Feld in Datenbank

    Hi

    Ich habe in einer MS SQL Datenbak ein Binary Feld. Ich greife mit ADO Komponenten darauf zu. Dazu gibt es mehrere Probleme. Zum einen weiß ich nicht wie ich in C++ damit umgehe. Komme mehr aus der Delphi Ecke und selbst da habe ich mit Binary Feldern keine Erfahrungen. Zum anderen weiß ich nicht genau was mich in dem Feld erwartet. Auf jeden Fall irgendwelche klaren Daten, also kein File, kein Bitmap oder soetwas. Deshalb würde ich gerne den Inhalt erst einmal irgendwo ablegen und diesen als Character ausgeben.

    Habt ihr vielleicht in kleines Beispiel wo ich sehen kann wie man das macht?

    Vielen Dank

    Mc

  • #2
    Wenn es "klare Daten" ?? sind das speichere sie in einen String ab. Mit einen TMemo kannst du sie dann anzeigen

    String sDaten = // Laden aus DB
    TMemo1->Text=sDaten;

    Wobei solche Daten eigentlich in einen VARCHAR gehören.....
    Zuletzt editiert von Christian Marquardt; 23.06.2007, 20:24.
    Christian

    Comment


    • #3
      Ok, also könnte ich da so machen:

      AString:=ADOQuery->FieldByName("XXX")->AsString;

      Und das dann so wie oben beschrieben in das Memo einfügen?

      Wenn meine Info korrekt wäre. Was mache ich aber wenn ich dort soetwas wie Hexadezimal oder sonst irgendetwas finde. Gibt es eine Allgemeine Form wo man ein Binary Feld ablegen und dann in alle möglichen Formen ausgeben kann?

      Vielen Dank

      Mc

      Comment


      • #4
        a) ja (Außer das die Zuweisung im Delphiformat nicht geht) ;-)

        b) ich denke es sind keine Binärdaten drin?? Wenn ja werden ggf. Schmierzeichen dargestellt. Sind 0-Bytes drin kann das auch zu unerwünschten Ergebnissen führen, da das als Ende des Strings aufgefasst wird.

        Grundsätzlich gibt es keine Daten im Text, Binär, Hexa oder sonstigen Format in einer Datei. Es ist immer eine Frage der Interpretation. Letzlich werden Bytes gespeichert.

        Hast du in deiner Datei "FF" stehen als TEXT, sind das 2 Bytes im ASCII Code 70 (0x46). Wenn du das als 255 interpretieren willst, musst du das selbst umwandeln

        Hast du in deiner Datei 1 Byte direkt als ff (255) stehen so wirst du das wiederum nicht als "FF" einlesen können. Vielmehr ist hier der Wert 255 dann umzuwandeln. Aber auch ein lesen als "255" im Textformat geht nicht.

        Weiterhin ist zu beachten (das trifft auf deine DB nun nicht zu) das ein INT-Wert, der direkt gespeichert wird, im sogeannten Hibyte/LowByte Format gespeichert wird.

        Beispiel mit einem 4 Byte Int-Wert

        Der Int hat der Wert 256. Bekanntermaßen kann ja nun ein Byte nur FF speichern und 256 ist etwas mehr. Die Speicherung erfolgt

        00 00 01 00

        in der Datei.
        Christian

        Comment

        Working...
        X