Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

проблема с UDF   Найти похожие ветки 

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

Здравствуй, уважаемый 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;


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

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


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

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

> function CSV2IB(var CSV_F_Name): PInteger;


> RETURNS INTEGER BY VALUE

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


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

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


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

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


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

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


 
Alexander Smith ©   (2004-05-25 01:06) [5]

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.024 c
3-1085140526
Ditrix
2004-05-21 15:55
2004.06.13
(interbase) Select в теле триггера


1-1085776423
white
2004-05-29 00:33
2004.06.13
Как увеличить переменную TDate на нужное кол-во дней?


4-1084026736
SergeyM
2004-05-08 18:32
2004.06.13
GetDriveType


14-1085377453
Паниковский
2004-05-24 09:44
2004.06.13
Кто на Линухе?


3-1085088368
Lego82
2004-05-21 01:26
2004.06.13
Не могу создать поле в Paradoxe((





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский