Използвам OmniThreadLibrary в приложение на Delphi 2007, което използва глобалния пул от нишки, за да извърши предварително някои файлови операции (трябва да опитам и да се уверя, че се извършват в определен ред).
Имам съдържанието на новосъздадения Ini файл, който се съхранява в TStringList.
След това предавам TStringList на екземпляр на TOmniTask.
class procedure saveIniFile(const iniFile: TStringList);
var
task : IOmniTaskControl;
begin
task := CreateTask(saveIniFileTask, 'saveIniFile')
.SetParameter('iniFile', iniFile)
.Unobserved
.Schedule;
end;
Не мога да разбера как да извлека TStringList в екземпляра TOmniTask
class procedure saveIniFileTask(const task: IOmniTask);
var
iniFile: TStringList;
begin
iniFile := task.Param['iniFile'];
end;
Горното ще върне грешка:
Incompatible types: 'TStringList' and 'TOmniValue'
Опитах се да преобразувам:
iniFile:= TStringList(task.Param['iniFile'].AsObject);
Но получавате грешка на компилатора:
F2084 Internal Error: C4310
Използвам OmniThreadLibrary версия 3.0 - не мога да компилирам 3.03b в D2007
Ако @gabr е за: Страхотна работа OmniThreadLibray, благодаря.
Internal Error
е грешка в компилатора и не би трябвало да се случи, независимо какво сте направили. Компилаторът явно се е объркал. Какво се случва, ако направитеmyObject := task.Param['iniFile'].AsObject;
и след товаiniFile:= myObject as TStringList;
? - person 500 - Internal Server Error   schedule 19.09.2014task.Param['iniFile'].AsObject<TStringList>
. - person gabr   schedule 20.09.2014