Zitat von
xZise:
Kann das denn so gehen?
Bei der Suche nach bereits vorhandenen Versionen verwendest du die falsche Variable (i statt j):
Delphi-Quellcode:
for j := 0 to High(Data.Versions) do
if Data.Versions[j].Version = sVersion then
VersionExists := j;
Überprüfe bitte auch, ob "PluginInfo.Notify.ChangelogCreated" auf True gesetzt ist.
Ich habe es mit folgendem Code getestet, wobei die erste Meldung die Anzahl der ToDo-Einträge anzeigt, und die zweite den obersten Wert des Array für die unterschiedlichen Versionen.
Delphi-Quellcode:
function TMyPlugin.ExecChangelogCreated(): Boolean;
type
TCLList =
record
Version :
String;
ChangeType :
Array of String;
ChangeLog :
Array of String;
end;
var
sVersion, sField:
String;
i, j, iVer: Integer;
aCL:
array of TCLList;
begin
Result := False;
App.GetTable(PChar('
SELECT * FROM todo WHERE projectid = ' + IntToStr(App.GetProjectId) + '
;'));
showmessage(inttostr(App.TableCount));
for i := 1
to App.TableCount
do begin
sVersion := App.FieldByName('
version');
iVer := -1;
for j := 0
to High(
aCL)
do
if (
aCL[j].Version = sVersion)
then iVer := j;
if (iVer = -1)
then begin
SetLength(
aCL, Length(
aCL) + 1);
iVer := High(
aCL);
aCL[iVer].Version := sVersion;
end;
SetLength(
aCL[iVer].ChangeType, Length(
aCL[iVer].ChangeType) + 1);
aCL[iVer].ChangeType[High(
aCL[iVer].ChangeType)] := App.FieldByName('
type');
SetLength(
aCL[iVer].ChangeLog, Length(
aCL[iVer].ChangeLog) + 1);
if (Trim(App.FieldByName('
changelog')) = '
')
then
sField := '
description'
else
sField := '
changelog';
aCL[iVer].ChangeType[High(
aCL[iVer].ChangeType)] := App.FieldByName(sField);
App.TableNext;
end;
showmessage(inttostr(high(
aCL)));
end;