D1P

|
Posted: Wed Mar 02, 2005 12:20 Post subject: Вызов процедуры обнуляет переменные |
|
|
Во время написания плагина super_wdx столкнулся со следующей проблемой: одна из процедур программы при работе с плагином FileType обнуляет все строковый переменные той процедуры, из которой она была вызвана.
Т.е, выглядит примерно так:
Code: |
Function GetFieldValue (const PlugName, FieldName, FileName:string):string;
Begin
//загружаем плагин, получаем из него значение, возвращаем его
//внутри - всё в порядке, получаем значение из wdx-плагина.
result:=ТО_ЧТО_НАДО; //возвращаемое значение - правильное.
End;
Function DecodeContentString (ContentString:String):String;
Var
//some string variables here
a,b,c,x:string;
Begin
a:=SomeFuncResult;
b:=SomeOtherFuncResult;
c:=ThirdFuncResult;
//тут всё в порядке
x:=GetFieldValue (a,b,c);
//вот тут-то начинаются глюки - все строковые переменные становятся пустыми.
End;
|
При работе с ЛЮБЫМ плагином всё тип-топ, все переменные сохраняются. При работе с FileType в GetFieldValue всё проходит нормально, но x в DecodeContentString (и все строковые переменные в DecodeContentString) обнуляются.
Пробовал переделывать передачу параметров по всякому (глобальными переменными, ссылками, как угодно) - результаты те же - не работает только с FileType.wdx. Посмотрел, как ведёт себя WdxGuide с эти плагином - тоже выдаёт ошибку (ессно, когда отлаживаешь код), но проходит дальше - там по-другому сделана передача параметров, найденное поле сразу добавляется в список. Мне этот вариант ну никак не подходит.
Может быть кто-то сталкивался с такой проблемой, и знает как это исправить? |
|