私はカスタム構造操作プログラムを書いています、そして私は以下のタイプを持っています:
type
StrLen = 0..MaxLen;
Str = ^StrInst;
StrInst = record
length: StrLen;
data: array [StrPos] of char;
end;
次に、次の手順を実行します。
procedure ReadStr(var S: Str);
var pos: StrLen;
begin
S^.length:=0;
pos := 0;
writeln('pos before entering:',pos);
writeln;
with S^ do begin
repeat
Inc(pos);
Read(data[pos]);
until (ord(data[pos]) = 13) or (pos > MaxLen+1);
writeln('pos after entering:',pos);
length := pos-1;
end;
end;
問題は、そのタイプの2番目のオブジェクトを読み取ると、pos変数、つまり長さフィールドが1ずつ不思議な増加をしていることです。次のコード
ReadStr(S1);
ReadStr(S2);
出力(どちらの場合も「123」を入力した場合):
pos before entering:0
123
pos after entering:4
pos before entering:0
123
pos after entering:5
誰かが私のために状況をクリアしてくれれば、とてもうれしいでしょう。前もって感謝します。