Delphi:动态变量名称?

时间:2015-11-21 22:27:55

标签: delphi loops variables

长期读者,第一次发布海报,我转向你,因为我多次在这里找到了我的问题的答案,我确信这个只是这个伟大社区的形式: )

我的问题可能看起来很奇怪,甚至是新的问题,但我正在构建一个使用网址解析文本行的应用程序。

代码的开头,第一步是确定文本块中有多少网址。我是通过使用" 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。

1 个答案:

答案 0 :(得分:1)

我建议只使用一个变量 - 一个字典/哈希表,然后将'动态变量名'作为该字典中的键,并将值存储在那些“动态命名”变量中。

这是关于词典的教程:

http://beensoft.blogspot.se/2008/09/simple-generic-dictionary-tdictionary.html