Hallo nochmal... wie versprochen jetzt nochmal meine Lösung wie ich sie am leichtesten und meiner meinung nach am sinnvollsten umgesetzt habe...
Delphi-Quellcode:
procedure TForm5.FormShow(Sender: TObject);
var
searchResult : TSearchRec;
begin
SetCurrentDir(form1.gamepath + '\Interface\Addons');
listbox1.Clear;
if FindFirst('*.*', faDirectory, searchResult) = 0 then
begin
repeat
if (searchResult.attr and faDirectory) = faDirectory then
if LeftStr(searchResult.Name, 9)='Blizzard_' then else ListBox1.Items.Add(searchResult.Name);
until FindNext(searchResult) <> 0;
FindClose(searchResult);
ListBox1.Items.Delete(0);
ListBox1.Items.Delete(0);
end;
end;
bewusst im FormShow, damit wirklich jedes mal nach neuen Ordnern gesucht wird...
natürlich hab ich die "Blizzard_" ordner überspringen lassen
und nun zu den TOCs um die es ja eigentlich geht...
Delphi-Quellcode:
procedure TForm5.ListBox1Click(Sender: TObject);
var
i: integer;
versioncheck: integer;
begin
[b]if FileExists(form1.gamepath + 'Interface\Addons\' + ListBox1.Items[ListBox1.ItemIndex] + '\' + ListBox1.Items[ListBox1.ItemIndex] + '.toc') then[/b]
begin
LabeledEdit1.Text:='';
memo1.Lines.Clear;
[b]tocpath:=form1.gamepath + 'Interface\Addons\' + ListBox1.Items[ListBox1.ItemIndex] + '\' + ListBox1.Items[ListBox1.ItemIndex] + '.toc';[/b]
memo1.Lines.LoadFromFile(tocpath);
for i:= 0 to Memo1.Lines.Count-1 do begin
if LeftStr(memo1.Lines[i], 14)='## Interface: ' then
begin
LabeledEdit1.Text:=MidStr(Memo1.Lines[i], 15, Length(memo1.Lines[i]));
versioncheck:=strtoint(LabeledEdit1.Text);
if versioncheck <> 30300 then LabeledEdit1.Color:= clRed else LabeledEdit1.Color:= clGreen;
versionline:=i;
end;
if LeftStr(memo1.Lines[i], 17)='## Interface: ' then
begin
LabeledEdit1.Text:=MidStr(Memo1.Lines[i], 18, Length(memo1.Lines[i]));
versioncheck:=strtoint(LabeledEdit1.Text);
if versioncheck <> 30300 then LabeledEdit1.Color:= clRed else LabeledEdit1.Color:= clGreen;
versionline:=i;
end;
end
end
end;
interesant dafür sind hier nur die
fett markierten zeilen... der rest dient eigentlich nur dazu, aus der TOC dann die Interfaceversion zu lesen und diese dann in einem LabeledEdit darzustellen um sie nach einem interfaceveränderndem Patch nicht umständlich toc für toc ändern zu müssen über einen texteditor.
blöd daran ist nur, dass beim Speichern...
Delphi-Quellcode:
procedure TForm5.Button2Click(Sender: TObject);
begin
if LabeledEdit1.Text<>'' then memo1.Lines.Delete(versionline);
memo1.Lines.Add('## Interface: ' + LabeledEdit1.Text);
Memo1.Lines.SaveToFile(tocpath);
end;
...die neue Zeile ans Ende der TOC gehängt wird und ich keine Möglichkeit gefunden habe die zeile aus der die interfaceversion gelesen wird einfach zu überschreiben... beeinflusst nicht die Funktionalität, sieht aber unschön aus am ende
Wem dazu noch etwas einfällt der kanns ja gerne hier posten.
MFG
Floddy
EDIT:::
sorry übrigens fürs Doppelpost.