私はこの問題を抱えています:空のリストから始めます(0個の要素)このリストに要素が存在するかどうかをチェックします。このレコードがリストにない場合は、このレコードをリストに追加します。そうでない場合は、リスト内のエレメントを更新します。 私はこのコードを書いて試してみました:List and Contains method
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, System.Generics.Collections, System.Generics.Defaults;
type
TDBStats = record
Comb: Integer;
Freq: Integer;
end;
TDBStatsList = TList<TDBStats>;
procedure Add(ODBStats: TDBStatsList; const Item: TDBStats);
var
rItem: TDBStats;
begin
rItem := Item;
rItem.Freq := 1;
oDBStats.Add(rItem);
end;
procedure Update(ODBStats: TDBStatsList; const Item: TDBStats; const Index: Integer);
var
rItem: TDBStats;
begin
rItem := Item;
Inc(rItem.Freq);
oDBStats[Index] := rItem;
end;
var
oDBStats: TDBStatsList;
rDBStats: TDBStats;
myArr: array [0..4] of integer;
iIndex1: Integer;
begin
try
myArr[0] := 10;
myArr[1] := 20;
myArr[2] := 30;
myArr[3] := 40;
myArr[4] := 10;
oDBStats := TList<TDBStats>.Create;
try
for iIndex1 := 0 to 4 do
begin
rDBStats.Comb := myArr[iIndex1];
if oDBStats.Contains(rDBStats) then
Update(oDBStats, rDBStats, oDBStats.IndexOf(rDBStats))
else
Add(oDBStats, rDBStats);
end;
// Check List
for iIndex1 := 0 to Pred(oDBStats.Count) do
Writeln(oDBStats[iIndex1].Comb:3, oDBStats[iIndex1].Freq:10);
finally
oDBStats.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
Readln;
end.
をし、この結果を返す必要があります:私は、問題について理解している
10 1
20 1
30 1
40 1
50 1
10 1
::私はoDBStatsを使用する場合
10 2
20 1
30 1
40 1
50 1
が、この結果を返すにrDBStats要素がリストに含まれている場合に制御する。(rDBStats)を含む。初めてそれを発見せずにリストに追加しました。しかしそれがリストに追加されると、freqフィールドは1に更新されます。だから、再びfreq = 0のrdbstatsが見つからないことを2回目に確認します。 私はこの問題を解決できますか?私はカウンターを持っている必要があります。私は入力から "櫛"を取得し、この "櫛"がリストに存在するかどうかをチェックしたい、レコードの他のフィールドの値から無関係にチェックします。私はリストで "櫛"を見つける場合は、私は更新、freqフィールドを増加させる。 ありがとうございます。
ランダムに選択したタイプ名のため、コードを読みにくいです。 'TDBStats'の代わりに' TDBStatList'を使い、 'PDBStats'の代わりに' TDBStat'を使います。 – kludg
完了しましたので、より良い結果が得られることを願っています。 –
'Freq'フィールド値も' Contains'メソッドでテストされます。単に 'rDBStats.Freq:= 1;' rDBStats.Comb:= myArr [iIndex1];の後の行を追加すると正しい結果が得られますが、それは一般的な解決策ではありません。あなたのリストには異なる比較者が必要です。 – kludg