Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизПадает сервак ФБ 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.032 c