Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

проблема с UDF [D7, IB6.x]


Alexander Smith ©   (2004-05-25 00:24:00) 

Здравствуй, уважаемый All! Помоги чем сможешь.

Была поставлена задача написания функции, читающей CSV в InterBase таблицу с помощью UDF.

Уже дошел до маразма, таблицу задал жестко с помощью DataModule.
в DLL пишу следующее.:

var
F_IntegerResult: Integer;

function CSV2IB(var CSV_F_Name): PInteger; cdecl; export;
var
...
begin
...
While (NOT(EOF(F))) and (...) do
begin
IBTable1.Last;
IBTable1.Insert;
...
while (..)//пока не считали всю строку грубо-говоря
begin
 IBTable1.FieldByName(Fields[i]).AsString:=ThisField;//текущее
поле текущей строки из CSV
 ...
end;
IBTable1.Post;
end;
...
Result:=@F_Integer_Result;
...
end;


В IBConsole пишу.:

DECLARE EXTERNAL FUNCTION CSV2IB6
CSTRING(255) CHARACTER SET WIN1251, CSTRING(255) CHARACTER SET WIN1251
RETURNS INTEGER BY VALUE
ENTRY_POINT 'CSV2IB' MODULE_NAME 'TT_DLL.DLL';

//вызов делаю так.:
SELECT FROMFILETOTABLE('z:\KSQL\t3\source.txt', '') FROM PROBA WHERE 1=1;


может я чего не понимаю, или УДФ вообще для этого не предназначены ?..

З.Ы. вылетает с ошибкой по дисконнекту, таблица не заполняется.


Alexander Smith   (2004-05-25 01:06:00) [1]

2wisekaa спасибо за твои советы - помогло. По squid - мыльни мне - договоримся о времени, в онлайн режиме вместе все настроим.

С уважением,
Александр Панютин.


Alexander Smith   (2004-05-25 00:46:00) [2]

Будь моя воля, я бы вообще дельфи не запускал для этого.. :-)


jack128   (2004-05-25 00:44:00) [3]

так я мое предположение верно? ИМХО проблема в этом..вообще, что странное ты делаешь, проще и надежнее написать простенькую прогу которая делает, то что ты хочешь..


Alexander Smith   (2004-05-25 00:39:00) [4]

по сути у меня CSV2IB - процедура, и мне вообще ретурн не нужен. но без него не берется запрос..


jack128   (2004-05-25 00:36:00) [5]

если я правильно понял,то ты в UDF просто конектишся ктой же базе из которой эта удф вызвана? Я далеко не уверен, что такое проходит безнаказанно..

> function CSV2IB(var CSV_F_Name): PInteger;


> RETURNS INTEGER BY VALUE

ты уверен, что этого хочешь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо