文字列を比較し、一致する場合は TRUE を返し、一致しない場合は FALSE を返すこの関数を作成しました。
唯一の問題は、コンパイル時に、結果が未定義になる可能性があるというエラーが表示されることです。この特定の状況で考えられる結果は 2 つしかないため、これが問題ではないことはわかっていますが、私は一種の完璧主義者であり、改善したいと考えています。どなたか教えていただけませんか?
function filterUPC(upc: String): Boolean;
var
i, pos1: integer;
Plano: TStringList;
upcPlano: String;
begin
Plano := TStringList.Create;
if (fmMain.lblPlanook.Visible) and
not (fmMain.lblPlanook.Caption = 'INCOMPATIBLE') then
begin
Plano.LoadFromFile(fmMain.ebPlano.Text);
for i := 0 to Plano.Count - 1 do
begin
pos1:=AnsiPos(';', Plano[i]);
upcPlano := AnsiMidStr(Plano[i], pos1 + 1, 12);
if (upc = upcPlano) then
begin
Result := TRUE;
Break;
end
else if (i = Plano.Count - 1) then
begin
Result := FALSE;
end;
end;
end
else
begin
Result := FALSE;
end;
Plano.Free;
end;