Pascal再入門:とりあえずmp3ファイルを読み込んでみる

 今、書こうとしているのは、mp3ファイルからid3tagを読み取る為のプログラム。

 Pascalでのテキストファイルのシーケンシャルな読み書きは、日常的に使っていたのだが、バイナリーとかランダムアクセスは使う機会がなかった。

 更に、id3tagの構造とか文字コードの知識とかが必要。あまり自信がない。座学で知識を収集してからでは、いつまで経っても先に進まないので、とりあえず読み込んでみる。

 対象は、前回分割したunitの片割れ。分割したのは、対象を局所化する為。

 
unit id3tag;
interface
procedure readfile(s : string);
implementation
procedure readfile(s : string);
var
   F : File;
   R : array[1..128] of byte;
   i : integer;
begin
   Assign(F,s);
   Reset(F,1);
   BlockRead(F, R, SizeOf(R));
   Close(F);
   for i := 1 to 128 do
   begin
      write(char(R[i]));
   end;
   writeln();
   writeln('dummy3');
end;
end.

  このunitと、呼び出し側のプログラムのコードを再コンパイルして、適当なmp3のファイル名を引数にして実行すると、文字コードとバイナリの混在した出力が得られる。最初の3文字'ID3'が読み取れたので。プログラムは正常に動いている。この後の出力を解析する必要がある。

 

 ID3TAGに関しては、とりあえず、最初にヒットした以下のサイトを参考にする。

MP3 ファイルのタグについての解説 (id3v1, id3v2, MPEG フレームヘッダ, XING ヘッダ)