Текущий архив: 2008.01.27;
Скачать: CL | DM;
Вниз
UDF Найти похожие ветки
← →
trubin © (2007-12-24 21:01) [80]
> адо мне буду использовать менеджер памяти
А смысл?
← →
palva © (2007-12-24 21:38) [81]Никак не могу приспособиться к вашей логике. Возьмем, например, такую строку:
"1234 5 6;xxx,yyy"
Ваша программа должна выделить из нее строку "yyy" Так?
← →
irish_34 (2007-12-24 22:03) [82]
> А смысл?
чтоб менше ошибок было как ещё в одном разговоре написано, используется один общий менеджер
← →
irish_34 (2007-12-24 22:04) [83]
> Ваша программа должна выделить из нее строку "yyy" Так?
ххх, но это не важно что происходит со строками, проблема я так поняла в некорректной работе с PChar
← →
palva © (2007-12-24 22:15) [84]> ххх
Тогда содержательно ваша программа работает неправильно. Возможно из-за ошибок, которых вы не ожидали, на ваших тестовых данных где-нибудь переполняется буфер.
> проблема я так поняла в некорректной работе с PChar
А для проверки работы с PChar можно временно выкинуть всю начинку и присвоить выходному параметру константное значение. По-крайней мере поймете, из-за чего программа валится.
Еще, Напишите здесь, как вы описали UDF в FireBird.
← →
irish_34 (2007-12-24 22:29) [85]
> Еще, Напишите здесь, как вы описали UDF в FireBird.
DECLARE EXTERNAL FUNCTION CEX6
CSTRING(50)
RETURNS CSTRING(50)
ENTRY_POINT "psc6" MODULE_NAME "Pr1.dll"
← →
palva © (2007-12-24 22:58) [86]trubin © (24.12.07 19:18) [76]
Вот это справедливо.
← →
Сергей М. © (2007-12-25 08:21) [87]
> irish_34 (24.12.07 22:03) [82]
> используется один общий менеджер
Общий с кем ?
> irish_34 (24.12.07 22:29) [85]
Отсебячина.
В [18] ф-ция декларирована иначе.
Что, проблема даже скопировать шаблон из [18] "один в один" ?)
← →
Desdechado © (2007-12-25 11:15) [88]> lstrcpy, lstrcpyA - это без разницы.
Разница выделена.
← →
Сергей М. © (2007-12-25 11:56) [89]
> irish_34 (24.12.07 22:04) [83]
>
>
Приведи десяток различных возможных вариантов строковых значений, которые ожидаются в кач-ве параметров твоей ф-ции, и выдели в них жирным подстроки, которые должна возвращать ф-ция ..
← →
palva © (2007-12-25 12:10) [90]
> Desdechado © (25.12.07 11:15) [88]
> > lstrcpy, lstrcpyA - это без разницы.
> Разница выделена.
Вообще да. Разница есть. В имени. Но я имел в виду, что без разницы, какое имя указывать. Это одна и та же функция.
{$APPTYPE CONSOLE}
uses Windows;
var
h: THandle;
f: FarProc;
begin
h := LoadLibrary("Kernel32.dll");
f := GetProcAddress(h, "lstrcpy");
WriteLn(Integer(f)); // 2088812033
f := GetProcAddress(h, "lstrcpyA");
WriteLn(Integer(f)); // 2088812033
end.
← →
Desdechado © (2007-12-25 12:15) [91]> palva © (25.12.07 12:10) [90]
Разница выделена была в том посте, который ты комментировал вначале. Это соглашение о вызовах stdcall.
А имена, которые ты зацепил, действительно синонимы, с этим я и не спорю.
← →
palva © (2007-12-25 13:10) [92]Desdechado © (25.12.07 12:15) [91]
OK
← →
irish_34 (2007-12-25 18:54) [93]
> Приведи десяток различных возможных вариантов строковых
> значений, которые ожидаются в кач-ве параметров твоей ф-
> ции, и выдели в них жирным подстроки, которые должна возвращать
> ф-ция ..
6,4,10
6(рез);7;103;5
6.8.12.10.9
6.21.15.21.5.21
6.15п.11.15
6.10 чпу
6.5.15.5.7.5.7.5
6.15(рихт.)8.15.13(шл.)8 чпу
← →
irish_34 (2007-12-25 18:56) [94]
> Что, проблема даже скопировать шаблон из [18] "один в один"
> ?)
Переделывала жи
← →
trubin © (2007-12-25 19:02) [95]Внимательно прочитай статью указанную в [1], хорошая статья
← →
irish_34 (2007-12-25 19:05) [96]
> Внимательно прочитай статью указанную в [1], хорошая статья
ды читала я, что конкретно не так-то?
← →
Сергей М. © (2007-12-26 09:22) [97]
> irish_34 (25.12.07 18:54) [93]
Т.е. в интересующих тебя строках 6-ка всегда является первым символом строки ? Или есль другие варианты, где 6-ка не первый символ ?
Например, 7.6.15п.11.15 ?
← →
irish_34 (2007-12-26 18:19) [98]6-ка всегда является первым символом строки
← →
Сергей М. © (2007-12-27 09:57) [99]Держи, горемычная)
DECLARE EXTERNAL FUNCTION CEX6
CSTRING(32767)
RETURNS PARAMETER 1
ENTRY_POINT "psc6" MODULE_NAME "PDL6.dll"
function psc6(AString:PChar):PChar; cdecl;
function ExtractSubstring(AString: String): String;
const
ld: PChar = ".,; ";
rd: PChar = ".,; )";
var
i,n,k,b: Integer;
function IsDelimiter(ADelimiters: PChar; ASymbol: Char): Boolean;
var
i: Integer;
begin
i := 0;
Result := False;
while (i < n) and not Result do
begin
Result := ASymbol = ADelimiters[i];
Inc(i);
end;
end;
begin
Result := "0";
if AString[1] <> "6" then Exit;
i := 2;
k := Length(AString);
n := StrLen(ld);
while (i <= k) and not IsDelimiter(ld, AString[i]) do Inc(i);
Inc(i);
b := i;
n := StrLen(rd);
while (i <= k) and not IsDelimiter(rd, AString[i]) do Inc(i);
Result := Copy(AString, b, i-b);
if Result="" then Result := "0";
end;
begin
Result := lstrcpy(AString, PChar(ExtractSubstring(AString)));
end;
← →
irish_34 (2007-12-28 20:48) [100]
> Держи, горемычная)
:* спасибо огромное, но и твоя и моя работают только начиная с 1.5 FB, а 1.0FB...даже и не знаю как он может работать с UDF.и я сделала проще установила 1.5
Страницы: 1 2 3 вся ветка
Текущий архив: 2008.01.27;
Скачать: CL | DM;
Память: 0.65 MB
Время: 0.026 c