Форум: "Основная";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизНесрабатывает передача параметра с 1-го раза , почему? Найти похожие ветки
← →
YOjik (2006-10-11 15:49) [0]В dll:
procedure Run_filter_inv_as_main_filter(App: HWnd ;OraSession: TOraSession; KeyField, Psevdonim: shortString; var SQLText: PChar); STDCALL;
begin
Application.Handle := App;
FrmMain_Filter_Investor := TFrmMain_Filter_Investor.Create(Application);
try
FrmMain_Filter_Investor.OraSession.AssignConnect(OraSession);
FrmMain_Filter_Investor.FilterMode := fmMainFilter;
FrmMain_Filter_Investor.Psevdonim := Psevdonim;
FrmMain_Filter_Investor.SourceSQL := StrPas(SQLText);
FrmMain_Filter_Investor.ShowModal;
SQLText := PChar(FrmMain_Filter_Investor.SourceSQL + #0);
finally
FrmMain_Filter_Investor.Free;
end;
end;
То есть возвращаю SQLText
В программе:
var
sqlt: PChar;
s: string;
begin
s := OraQuery2.SQL.Text;
sqlt := PChar(s + #0);
Run_filter_inv_as_main_filter(Application.Handle, OraSession1, "SIK", "INV", sqlt);
s := String(sqlt);
Form1.OraQuery2.Close;
Form1.OraQuery2.SQL.Text := s;
Form1.OraQuery2.Open;
end;
В строчке s := String(sqlt); возникает exception , а вот второй раз вызова всё нормально, пробовал StrPCopy, StrPas - не помогает, как лечить?
← →
Desdechado © (2006-10-11 16:03) [1]1. зачем var для SQLText: PChar ? это же и так указатель
2. не надо никаких нулей дописывать в конец, преобразование String - PChar - String и так нули вполне обрабатывает
3. зачем пытаться возвращать SQL ?
4. если уж пытаешься возвращать SQL, выдели память под него
5. в программе как описан прототип вызываемой из DLL функции?
← →
Stanislav © (2006-10-11 16:04) [2]Нужно SQLT задать размер.
← →
YOjik (2006-10-12 07:21) [3]Спасибо ВАМ, дейстивительно надо было выделить память, а var и #0 в конце я писал так уже от безисходности ).
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.05 c