掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バイナリファイルの読み込み (ID:27531)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
HOta様、TOBY様、エコ様 貴重なアドバイスをありがとうございました。理解度ほとんどゼロでスタートしましたが昨日から苦戦すること約16時間,お蔭様で読み込みに成功しました。あれやこれや試していたら一時はグチャグチャになってしまいましたが結果的にHOta様のサンプルを基本にエコ様のアイデアをミックスしたようなものとなりました。 下記コードでは2度読みのようですがVBでGET #による一度読みよりもかなり速くなった感じがします。とりあえず(無理やり?)動いていますが間違っている点などありましたらご指摘くださるよう宜しくお願いします。 procedure Gread(gfile:string); var FS:TFileStream; b:array of Byte; b1,b2:byte; i,ii,i5,n,nmem:Integer; dataReal:real; //dataLng:LongInt; //dataSgl:Single; dataint:integer; begin b1:=1; b2:=0; b3:=0; //タグの値 //配列のメモリを確保 nmem:=100; gmemset(nmem); n:=0; FS:=TFileStream.Create(gfile,fmOpenRead); Try SetLength(b,FS.Size); FS.ReadBuffer(Pointer(b)^,FS.Size); i5:=length(b)-30; for i:=1 to i5 do begin if b[i] = b1 then if b[i+1] = b2 then if b[i+2] = b3 then if b[i+24] = b1 then if b[i+25] = b2 then if b[i+26] = b3 then begin n:=n+1; // ここで必要な配列をリセット //// DATA1 (INT) ii:=i+6; //DATA1の位置 FS.Seek(ii,soFromBeginning); FS.ReadBuffer(dataint , 4); DATA1[n]:=dataint; //// DATA2 (REAL) ii:=i+14; FS.Seek(ii,soFromBeginning); FS.ReadBuffer(datareal , 8); DATA2[n]:=datareal; end; end; Finally FS.Free; End; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.