Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
6-1080234424
rezya
2004-03-25 20:07
2004.05.16
Проблема с неблокирующими сокетами.


14-1083132708
Тимохов
2004-04-28 10:11
2004.05.16
Режим пользователя и режим ядра.


7-1080549868
Ivolg
2004-03-29 12:44
2004.05.16
Прехват клавишь: Alt ,Ctrl и Delete


4-1080579494
BorH
2004-03-29 20:58
2004.05.16
Список процессов


1-1083221665
Yuri2004
2004-04-29 10:54
2004.05.16
Проблема с Interface ом




   Наверх