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

Вниз

Падает сервак ФБ 1.03   Найти похожие ветки 

 
Соловьев ©   (2004-04-20 10:08) [0]

Написал UDF:

там есть такая функция

function MaskToPhone(NumberStr, MaskStr, SeparatorChar: PChar):PChar; cdecl; export;
var i, count_replace: integer;
   TempStr: string;
begin

Result := PChar(String(NumberStr));

if String(MaskStr) = "" then Exit;

TempStr := String(MaskStr);
count_replace := 0;
for i:=0 to Length(String(MaskStr)) do
  if String(MaskStr)[i] <> String(SeparatorChar)[1] then
  begin
   TempStr[i] := String(NumberStr)[count_replace];
   count_replace := count_replace + 1;
  end;
 Result := PChar(TempStr);
end;

Если MaskStr = "" - сервак валится.
Не понятно почему нижние строчки не спасают
Result := PChar(String(NumberStr));
if String(MaskStr) = "" then Exit;
Запрос вида

select t1."phone",  "view_phone"(t1."phone", "","-")
FROM "installation_of_ telephones" t1
where t1."id_owner"=736


 
Соловьев ©   (2004-04-20 10:10) [1]

Вот как описана эта функция в БД

DECLARE EXTERNAL FUNCTION "view_phone"
   CSTRING(20),
   CSTRING(50),
   CSTRING(1)
RETURNS CSTRING(50)
ENTRY_POINT "MaskToPhone" MODULE_NAME "udf.dll"


 
Johnmen ©   (2004-04-20 11:08) [2]

Странно...
Но есть ошибка - в указании границ цикла...:)


 
Соловьев ©   (2004-04-20 11:12) [3]


> Johnmen ©   (20.04.04 11:08) [2]

самое интересное что код работал 1.5 года как часики :)) А вот теперь вылезла ошибка


 
Kadr ©   (2004-04-20 11:14) [4]

Result := PChar(String(NumberStr));
if Length(MaskStr) = 0 then Exit; ------------!!!

for i:=0 to Length(String(MaskStr)) do
if String(MaskStr)[i] <> String(SeparatorChar)[1] then -------!!!

ошибка String(MaskStr)[i] ты берешь с нуля а надо с 1
попробуй и так


 
Соловьев ©   (2004-04-20 11:17) [5]


> Kadr ©   (20.04.04 11:14) [4]
> Result := PChar(String(NumberStr));
> if Length(MaskStr) = 0 then Exit; ------------!!!

Заработало!!!

> for i:=0 to Length(String(MaskStr)) do
> if String(MaskStr)[i] <> String(SeparatorChar)[1] then -------!!!
>
> ошибка String(MaskStr)[i] ты берешь с нуля а надо с 1
> попробуй и так

Да, переделал. Это блин привычка от С+Паскалевская :)


 
Соловьев ©   (2004-04-20 12:19) [6]


> Johnmen ©   (20.04.04 11:08) [2]
> Странно...
> Но есть ошибка - в указании границ цикла...:)

как ни странно - нет :))) если 0 - то все ок. Если с 1 - то не так как надо


 
Johnmen ©   (2004-04-20 12:23) [7]

>Соловьев ©   (20.04.04 12:19) [6]
>как ни странно - нет :)))

Да ? А что такое s[0], где s : string ?


 
Соловьев ©   (2004-04-20 12:25) [8]


> Johnmen ©   (20.04.04 12:23) [7]

не знаю почему но с 0-вым индексом работает, а с 1 - нет:)



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
14-1082773743
Думкин
2004-04-24 06:29
2004.05.16
С днем рождения! 24 апреля.


6-1080148640
Ильдар
2004-03-24 20:17
2004.05.16
Простейший сервер на TSocket.


14-1082971109
Igorek
2004-04-26 13:18
2004.05.16
А давайте поговорим,


4-1077013392
KosilkA
2004-02-17 13:23
2004.05.16
иконку из ехе в файл


3-1082388148
Nazer
2004-04-19 19:22
2004.05.16
UDF Функции