长期读者,第一次发布海报,我转向你,因为我多次在这里找到了我的问题的答案,我确信这个只是这个伟大社区的形式: )
我的问题可能看起来很奇怪,甚至是新的问题,但我正在构建一个使用网址解析文本行的应用程序。
代码的开头,第一步是确定文本块中有多少网址。我是通过使用" copy"功能从文本块的开头到结尾,寻找标签" a href ="标签
这很好用。
以下是代码:
Tag := '<a href="';
Longueur := Length(ArtistNBSource);
Result := 0;
For i := 1 to Longueur do
begin
Copied := Copy(ArtistNBSource,i,Length(Tag));
if Copied = Tag then inc(Result)
end;
ARTIST_COUNT := Result;
现在,根据找到的网址数量,我将循环浏览文本块。
我想避免的是这样的事情......
if Result : 1 do
begin
some instruction
end
else if Result = 2
begin
other instruction
end
else if Result = 3....
...因为在文本块中最多可以有5个url,这会给我一个非常长的代码。
我想象的是:
首先,我将变量声明为已知的最大值。
var
AUPOS1, AUPOS2, AUPOS3, AUPOS4, AUPOS5, ANPOS1, ANPOS2, ANPOS3, ANPOS4, ANPOS5, ia : Integer;
解析模式已修复,我想到了这个:
For ia := 1 to ARTIST_COUNT do
begin
(AUPOS+IntToStr(ia)):= Pos('">', ArtistNBSource);
(AURL+IntToStr(ia)) := Copy(ArtistNBSource,11,(AUPOS+IntToStr(ia))-11);
Delete(ArtistNBSource,1,(AUPOS+IntToStr(ia))+1);
(ANPOS+IntTostr(ia)) := Pos('</a>', ArtistNBSource);
(ANAME+IntToStr(ia)) := Copy(ArtistNBSource,1,(ANPOS+IntToStr(ia))-1);
Delete(ArtistNBSource, 1,(ANPOS+IntToStr(ia))+4);
end;
ia变量匹配循环次数和每个循环的变量名称,我想我可以自动增加变量名称并将它们的值赋给先前声明的变量。
但当然这不起作用:)。
我的问题:
你们有没有看到解决方案?
如果那时候,我是否会被谴责写下&#39;长序列,还是可以通过循环动态调整变量名?
提前感谢大家提出的任何意见,可能会让我知道应该遵循的方向。
干杯
Mathmathou。
答案 0 :(得分:1)
我建议只使用一个变量 - 一个字典/哈希表,然后将'动态变量名'作为该字典中的键,并将值存储在那些“动态命名”变量中。
这是关于词典的教程:
http://beensoft.blogspot.se/2008/09/simple-generic-dictionary-tdictionary.html