AGB  ·  Datenschutz  ·  Impressum  







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

Hexwerte in eine Datei schreiben...

Ein Thema von BenTech · begonnen am 8. Sep 2004 · letzter Beitrag vom 9. Sep 2004
Antwort Antwort
BenTech

Registriert seit: 16. Jun 2003
Ort: Dortmund
60 Beiträge
 
Turbo Delphi für Win32
 
#1

Hexwerte in eine Datei schreiben...

  Alt 8. Sep 2004, 20:24
Hallo,
ich schreibe gerade eine Komponente, mit der sich der ID3v2 Tag einer Mp3 Datei manipulieren lässt.
Der Tag besteht aus einzelnen Frames, in denen die Informationen gespeichert sind.
Nun zu meinem Problem:
Am Anfang eines jeden Frames wird die Länge des Frames (in Byte) angegeben.
Ich finde aber einfach keine Möglichkeit diese Information in die Datei zu schreiben.

Folgendermaßen sieht der Quelltext aus (am Beispiel des APIC Frames für das CD Cover):
Code:
procedure SchreibeFrameHeaderAPIC;
var buf    : PByteArray;
    imgSize : Integer;
    imgHex : String;
begin
 GetMem(buf,4);
 imgSize := FileSize(coverimg);
 imgHex := IntToHex(imgSize);
 ...
 BlockWrite(mp3file,buf^,4);
 FreeMem(Buf);
end;
Ich habe den Code etwas vereinfacht, damit er übersichtlich bleibt .
"..." markiert die Stelle, an der mein Problem liegt.
Der String "imgHex" sieht beispielsweise so aus: $00001997
Ich habe jetzt nur keinen blassen schimmer, wie ich das in den Puffer schreiben soll, da ich keine Funktion in Delphi gefunden habe, mit der sich so etwas machen lässt.
Kann mir eventuell jemand helfen. Vielen Dank schonmal
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#2

Re: Hexwerte in eine Datei schreiben...

  Alt 8. Sep 2004, 23:26
Du könntest das mit BlockWrite(mp3file,imgHex[1],length(imgHex)); in die Datei schreiben.

Du willst auch sicher die Zahl als Zeichenkette und nicht direkt als Bytes speichern???

Ich hab davon keine Ahnung von dem MP3-Tag-Zeugs, aber mit 4 Ziffern kommt man nur auf 0xFFFF == 64KByte (und das ist irgendwie wenig)!
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
BenTech

Registriert seit: 16. Jun 2003
Ort: Dortmund
60 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Hexwerte in eine Datei schreiben...

  Alt 8. Sep 2004, 23:39
Oh, tut mir leid. Da hab ich mich etwas missverständlich ausgedrückt.
Ich möchte es folgendermaßen in die Datei schreiben:
Code:
 buf[0] := $00;
 buf[1] := $00;
 buf[2] := $19;
 buf[3] := $97;
 BlockWrite(mp3file,buf^,4);
Nur weiß ich nicht, wie man das macht, wenn es sich um Variablen handelt.
Ich kann ja nicht $imgHex schreiben.
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Hexwerte in eine Datei schreiben...

  Alt 8. Sep 2004, 23:48
hm ...

OH IntToHex (Funktion) vielleicht?

Grüsse
Woki
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#5

Re: Hexwerte in eine Datei schreiben...

  Alt 9. Sep 2004, 00:25
Die grösse muss ja nicht in Hex, sondern binär gespeichert werden. Leider müssen vorher die Bytes umgedreht werden (Stichwort Bei Google suchenLittle Endian und Bei Google suchenBig Endian).
Delphi-Quellcode:
procedure SchreibeFrameHeaderAPIC;
var buf : PByteArray;
    imgSize : Integer;
    imgHex : String;
begin
GetMem(buf,4);
imgSize := FileSize(coverimg);
ImgSize := ((ImgSize and $FF000000) shr 24) +
           ((ImgSize and $00FF0000) shr 8) +
           ((ImgSize and $0000FF00) shl 8) +
           ((ImgSize and $000000FF) shl 24) ;
CopyMemory(buf, @ImgSize, 4);
//...
BlockWrite(mp3file,buf^,4);
FreeMem(Buf);
end;
  Mit Zitat antworten Zitat
BenTech

Registriert seit: 16. Jun 2003
Ort: Dortmund
60 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Hexwerte in eine Datei schreiben...

  Alt 9. Sep 2004, 10:24
Vielen Dank SCP!
Jetzt funktionierts. Ich hatte auch probiert, den Integer Wert direkt
in die Datei zu schreiben, hatte aber bemerkt, dass die Bytes falschrum gespeichert wurden.
Danke für die Hilfe
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Hexwerte in eine Datei schreiben...

  Alt 9. Sep 2004, 10:27
Moin!

Ansonsten kannst du dir diese Frame Header Geschichten bei neuen Problemen auch von meiner Lib abschauen die ja frei verfügbar ist auf meiner Homepage.

MfG
Muetze1
  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 05:52 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