Das passiert. Das wichtigste ist ja, dass es nun funktioniert.
Einen Tipp habe ich aber noch. Du machst das ganze ziemlich umständlich. Einfacher und übersichtlicher wäre es so:
Delphi-Quellcode:
procedure LadenWebTools;
function ReadNextWebTool(const ADataList: TStringList; const AIndex: Integer): TWebTool;
begin
Result.Name := ADataList[AIndex];
{ mehr Daten... }
Result.Tag := ADataList[AIndex + 4];
{ mehr Daten... }
end;
var
User: string;
Delphi: Boolean;
Data: TStringList;
CurrentTool: TWebTool;
i : integer;
const
EntryLength: Integer = 6;
begin
User := GetEnvironmentVariable('Computername');
Delphi := FindWindow('TAppBuilder', nil) <> 0;
Data := TStringList.Create;
try
Data.LoadFromFile('WebTools.txt');
i := 0;
SetLength(WebTools, 0);
while i <= Data.Count - 1 do
begin
CurrentTool := ReadNextWebTool(Data, i);
Inc(i, EntryLength);
if FileExists('WebTools\' + Name + '.png')
and CurrentTool.Tag ... then
begin
SetLength(WebTools, Length(WebTools) + 1);
WebTools[High(WebTools)] := CurrentTool;
end;
end;
finally
Data.Free;
end;
[...]
Dann hast du eine Funktion, die dir den nächsten Eintrag liest und kannst mit dessen Daten zur Prüfung arbeiten. Daher kannst du das Array dann nur erweitern, wenn du den Eintrag möchtest und musst nichts wieder löschen.
Und du brauchst das leidige with nicht.