掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
動的配列をグローバルに参照するには? (ID:9062)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Jokさんのおっしゃる辺りに問題がありそうだ、ということは分かってきました。 まだ解決していません。自分にはファイル入出力の根本が理解できていないようです。ずるずると甘えたくはないのですが、振舞い方のヒントをちょうだいできれば有難いです。 読みたいファイルは次のような構造になっています。 すべて1バイトずつで制御すべきかなと思っています。 (空)18バイト ItemRec 40バイト 全体定義レコード (空)70バイト IconRec[0] 98バイト 項目定義レコード Label[0..m0] 32バイト×m0個 細目ラベル IconRec[1] 98バイト Label[0..m1] ・・・・・・ IconRec[n] 98バイト Label[0..mn] −−−−−− コード(部分)−−−−−−−−−−−−− var F: File of Byte; //型つきファイルを宣言しておいて ItemRec: TItemRec; //40バイトのレコード IconRec: array of TIconRec; //98バイトのレコード procedure IconRead; var i, j: integer; Label: array[0..35] of char //36バイトの文字配列 begin AssignFile(F, FName); Reset(F); //1バイト単位のつもり 暗黙128バイトだったらとても困る Seek(F, 18); //先頭から19バイト目のつもり BlockRead(F, ItemRec, 40); //40バイト1レコードのつもり Seek(F, 128); //先頭から129バイト目のつもり SetLength(IconRec, ItemRec.n); //ItemRec.n個のIconRec分(怪しい!) for i:= 0 to ItemRec.n-1 do begin BlockRead(F, IconRec[i], 98); //98バイトのレコード1個ずつのつもり for j:= 0 to IconRec.m-1 do //IconRec.m個分 BlockRead(F, Label[J], 36); //Label1個ずつ読み飛ばしのつもり end; CloseFile(F); end; 難所を越えたいと四苦八苦しています。 SetLengthが一番怪しいと踏んでいるのですが・・・
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.