一个双循环问题 100分相送 ( 积分: 100 )

  • 主题发起人 主题发起人 renaihao
  • 开始时间 开始时间
R

renaihao

Unregistered / Unconfirmed
GUEST, unregistred user!
for II := 0 to memo1.Lines.Count -1 do begin
sTmpMd5 := memo1.Lines[II];
end;

for I := 0 to g_PatchList.Count - 1 do
begin
PatchInfo := pTPatchInfo(g_PatchList.Items);
if PatchInfo.PatchMd5 <> sTmpMd5 then
begin
ListItem := ListView1.Items.Add;
ListItem.Checked := True;
//添加升级文件名
ListItem.Caption := inttostr(PatchInfo.PatchType);
//添加升级文件大小
ListItem.SubItems.Add(PatchInfo.PatchFileDir);
//添加升级文件日期
ListItem.SubItems.Add(PatchInfo.PatchName);
//添加升级文件下载地址
ListItem.SubItems.Add(PatchInfo.PatchMd5);
ListItem.SubItems.Add(PatchInfo.PatchDownAddress);
end;
end;
if ListView1.Items.Count = 0 then
MessageBox(handle, '没有升级文件列表', '信息', MB_OK);
end;


问题是这样的 g_PatchList这个列表里 比如有N个值 而 memo1里也有N个值
我是想让他从 g_PatchList 这个列表里 每一个值 和 memo1里的每一个值对比 也就是 if PatchInfo.PatchMd5 <> sTmpMd5 then 这一句 但是现在的问题是 sTmpMd5 始终都是 memo1里的 最后一个值 不是循环来的 帮帮忙 谢谢
 
明显的语法问题。
第一个循环结束了,才开始第二个循环。当然会是Memo1里的最后一个值了。
把第一个循环里的end放到第二个循环的End后面就行了。
for II := 0 to memo1.Lines.Count -1 do begin
sTmpMd5 := memo1.Lines[II];


for I := 0 to g_PatchList.Count - 1 do
begin
PatchInfo := pTPatchInfo(g_PatchList.Items);
if PatchInfo.PatchMd5 <> sTmpMd5 then
begin

不过这里内容要改一下了。

if PatchInfo.PatchMd5 = sTmpMd5 then
g_PatchList.Items :='';



end;
end;
end;
再做一次循环吧
for I := 0 to g_PatchList.Count - 1 do
begin
if g_PatchList.Items <> '' then
begin
PatchInfo := pTPatchInfo(g_PatchList.Items);
ListItem := ListView1.Items.Add;
ListItem.Checked := True;
//添加升级文件名
ListItem.Caption := inttostr(PatchInfo.PatchType);
//添加升级文件大小
ListItem.SubItems.Add(PatchInfo.PatchFileDir);
//添加升级文件日期
ListItem.SubItems.Add(PatchInfo.PatchName);
//添加升级文件下载地址
ListItem.SubItems.Add(PatchInfo.PatchMd5);
ListItem.SubItems.Add(PatchInfo.PatchDownAddress);

end;
end;
 
这样不行啊 ListView1 会多添一倍的 PatchInfo 这个数据
试着 把memo1的循环 放在 for I := 0 to g_PatchList.Count - 1 do
下面 也是 ListView1 会多添一倍的 PatchInfo 这个数据
 
刚才没仔细看,循环里的规则不适用,我大致改了一下。
 
for II := 0 to memo1.Lines.Count -1 do begin
sTmpMd5 := memo1.Lines[II];


for I := 0 to g_PatchList.Count - 1 do
begin
PatchInfo := pTPatchInfo(g_PatchList.Items);
if PatchInfo.PatchMd5 <> sTmpMd5 then
begin

不过这里内容要改一下了。

if PatchInfo.PatchMd5 = sTmpMd5 then
g_PatchList.Items :='';



end;
end;
end;
再做一次循环吧
for I := 0 to g_PatchList.Count - 1 do
begin
if g_PatchList.Items <> '' then
begin
PatchInfo := pTPatchInfo(g_PatchList.Items);
ListItem := ListView1.Items.Add;
ListItem.Checked := True;
//添加升级文件名
ListItem.Caption := inttostr(PatchInfo.PatchType);
//添加升级文件大小
ListItem.SubItems.Add(PatchInfo.PatchFileDir);
//添加升级文件日期
ListItem.SubItems.Add(PatchInfo.PatchName);
//添加升级文件下载地址
ListItem.SubItems.Add(PatchInfo.PatchMd5);
ListItem.SubItems.Add(PatchInfo.PatchDownAddress);

end;
end;
 
g_PatchList.Items :='' 这句不行哦

提示 类型是指针类型 不是 string类型
 
百刃刀客 谢谢你啊 问题 解决了 感谢您的帮助 没别的东东 送分给你吧 哈
 
接受答案了.
 
晕了,我随手写写,g_PatchList 不是TlistBox?
不过这种问题,你自己应该能解决的吧。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
618
import
I
I
回复
0
查看
687
import
I
后退
顶部