2022/12/23
TMK データの誤りの報告 承前
詰とうほく、などで、佐原氏より詰将棋のデータを受け取った方への報告です。
パラ2020年 の TMK データの、手順データで、「同」の抜けがあった部分の修正は済んでいます。次回の詰とうほくでは入手可能ですが、急ぐ場合は連絡を貰えれば対応します。
パラ2021年 の TMK データ の中で、七條賞、 看寿賞、春霞賞 の紹介図などで、2020年のデータから手順をコピペしてあるものは、「同」が抜けています。こちらの修正は、まだ。
佐原さんに連絡したときには、すでに 2020年1月分を手作業で直しておられたのだったが、program で対応することにしました。
手順行の所だけ取り出すのは、こんな具合で。
sl := TStringList.Create;
for I := 0 to SaharaText.SourceText.Count -1 do begin
sLine := Saharatext.SourceText[i];
SHInfo := SaharaText.OpsList[i] as TShInfo; // 行数と一致
case SHInfo.opc of
opMove, opNCMove, opVar,opSHRSakui,opSHRHenka: begin
SHTjn := TSHTjn.Create(sLine);
SL.Add(SHTjn.GetTMKLines);
SHTjn.Free;
end;
else begin
SL.Add(sLine);
end;
end;
end;
...
手順行の解析部分の修正はこんなかんじだった、
procedure getCoOrdinate(var s: string; var MInfo: TMoveInfo);
var
ms1: string;
ms2: string;
L: integer;
begin
ms1 := Copy( s, 1, 1);
ms2 := Copy( s, 2, 1);
L := length(s);
if ( ms1 = '同' ) then begin
MInfo.CoOrdStr := ms1;
s := Copy(s, 2, L-1);
getChessMen(s, MInfo);
end
else if ( ( pos( ms1, DiditStr)<> 0 ) and
( pos( ms2, DiditStr)<> 0 ) ) then begin
MInfo.CoOrdStr := ms1 + ms2;
s := Copy(s, 3, L-2);
getChessMen(s, MInfo);
end
else if
pos( ms1, '王玉飛角金銀桂香歩龍竜馬全圭杏と')<>0 then begin
MInfo.CoOrdStr := '同';
getChessMen(s, MInfo);
AddSame :=1;
end;
end;
最後の else 節の追加ですんだ。
フェアリーの「Q」などの駒や手順中の「A」などは、消えてしまうが、それは手作業で直した方が、program を書くより早いだろうとのことで、対応していない。