Delphiでのgoto文

構造化プログラミングでは,基本,禁じ手のgoto文
最近は見ることも極端に減って

昔は,オイラも,まったく使わなかったんですわ>C言語

でもねぇ...

多重ループの完全ループアウトのとき
if文やら使って構造を作るより,条件成り立ったら,gotoで飛ばしてしまえ!な派に改宗したり(爆

いや,ループ構造が汚くなって
かえって不具合呼ぶことが多くなったもんでなぁ...

して,Delphiでのgoto文
ちょいと特殊で

gotoのジャンプ先を,LABEL命令であらかじめ定義しないといけなかったり

こんな感じ


//**********************************************
//受信バッファの中身を検索してEOT(0x04)があるか,返す
//
//**********************************************
function TSocketIO.IsReceiveDataEnd: Boolean;
var
i : Integer;
j : Integer;
st : string;
label IsReceiveDataEnd_J1; //<---これがいる
begin

result := false;
for i := 0 to FReceiveBuf.Count - 1 do
begin
st := FReceiveBuf[i];

for j := 1 to Length(st) do
begin
if st[j] = char($04) then
begin
result := true;
goto IsReceiveDataEnd_J1;
end;
end;
end;

IsReceiveDataEnd_J1:

end;
[/delphi]
まぁ,goto文,多用すると,スパゲッティプログラム(死語)の元なんで
エッセンス程度に使用するのがよろしいか,と

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください