Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

UDF [D7, XP]


Страницы:   1 2 3 4 5

Irish_34 ©   (2007-12-10 20:02:00) 

Привет ВСЕМ, помогите пожалусто UDF, начиная работать в процедуре "спотыкается" об чего, я уже не знаю в чем и ошибка и чге я некоректно что обозвала

DECLARE EXTERNAL FUNCTION CEX6
   VARCHAR(50)
RETURNS VARCHAR(50) BY DESCRIPTOR
ENTRY_POINT 'psc6' MODULE_NAME 'PDL6.dll'

function psc6(var s:PChar):PChar;cdecl;export;
var
j1,i1:byte;
j: PSmallInt;
s1: string;
 begin
 j:=nil;
 j1:=0;
 i1:=0;
 if ((s=nil) or (s='0') or (s='')) then
  Result:='0'
  else
   if StrPos(s,'6')<>nil then
    begin
     j:=PSmallInt(StrPos(s,'6'));
     s1:=PChar(s)^;
     Result:='';
     delete(s1,1,j^+1);
     if Length(s1)=1 then //s:=copy(s1,1,1)
     StrPLcopy(Result,s1,1)
     else
      begin
       for i1:=1 to length(s1) do
        if ((s1[i1]=',') or (s1[i1]='.') or (s1[i1]=';') or (s1[i1]=' '))
        then
         begin
          delete(s1,i1,length(s1));
            StrPLcopy(Result,s1,length(s1));
         end
        else StrPLcopy(Result,s1,2);
       end;
       end
    else
   Result:='';
   end;


trubin   (2007-12-24 21:01:00) [21]


> адо мне буду использовать менеджер памяти


А смысл?


irish_34   (2007-12-24 20:59:00) [22]


> > uses ShareMem, SysUtils;
>
>
> Зачем это

адо мне буду использовать менеджер памяти


palva   (2007-12-24 20:46:00) [23]

lstrcpy, lstrcpyA - это без разницы.


Desdechado   (2007-12-24 19:19:00) [24]

uses System;
или
function lstrcpy(lpString1, lpString2: PChar): PChar; stdcall;
 external 'kernel32.dll' name 'lstrcpyA';

Учите матчасть.


trubin   (2007-12-24 19:18:00) [25]


> uses ShareMem, SysUtils;


Зачем это


> function lstrcpy(Str1, Str2: PChar): PChar; cdecl;external
> 'kernel32.dll';

Вроде StdCall требуется, может ошибка при попытке очистки стека


irish_34   (2007-12-24 18:50:00) [26]


> Показывай код ..

{.$Define Debug}

{$ALIGN OFF}

unit U1;

interface

uses ShareMem, SysUtils;
implementation

function lstrcpy(Str1, Str2: PChar): PChar;cdecl;external 'kernel32.dll';
function psc6(s:PChar):PChar;cdecl;export;
var
i1,j,j1:byte;
s1: string;
 begin
j1:=0;
//if (s=nil) then s1:='0'
//else
begin
s1:=s;
if Pos('6',s1)>0 then
  begin
  delete(s1,1,Pos('6',s1));
   if Pos(',',s1)>0 then j1:=Pos(',',s1) else
   if Pos('.',s1)>0 then j1:=Pos('.',s1) else
   if Pos(';',s1)>0 then j1:=Pos(';',s1) else
   if Pos(' ',s1)>0 then j1:=Pos(' ',s1) else
   if Pos(')',s1)>0 then j1:=Pos(')',s1);
   if j1>0 then delete(s1,1,j1) else s1:='0';
   if length(s1)=0 then s1:='0' else
   begin
   j:=0;
   if Pos(',',s1)>0 then delete(s1,Pos(',',s1),length(s1));
   if Pos('.',s1)>0 then delete(s1,Pos('.',s1),length(s1));
   if Pos(';',s1)>0 then delete(s1,Pos(';',s1),length(s1));
   if Pos(' ',s1)>0 then delete(s1,Pos(' ',s1),length(s1));
   end;
  end
  else s1:='0';
  end;
 result:=lstrcpy(s,PChar(s1));
end;
exports
psc6;

end.


Сергей М.   (2007-12-24 11:53:00) [27]


> дает такой же результат
>


Показывай код ..


irish_34   (2007-12-23 18:33:00) [28]


> [18]

дает такой же результат


Сергей М.   (2007-12-20 08:25:00) [29]


> irish_34   (19.12.07 17:59) [69]


Код в [36] не соответствует шаблону из [18]


irish_34   (2007-12-19 19:23:00) [30]


> тебя решение интересует

меня интересует причина такой ошибки памяти


www   (2007-12-19 18:15:00) [31]


> irish_34   (19.12.07 17:59) [69]

тебе показали явные в нем проблемы

тебя решение интересует?
нет?


irish_34   (2007-12-19 17:59:00) [32]


> Показывай свой код с шаблоном [18] ..

[36]


Сергей М.   (2007-12-19 08:24:00) [33]


> irish_34   (18.12.07 19:00) [65]



> ошибка об инструкции всё равно остаётся (даже в [18])


Показывай свой код с шаблоном [18] ..


irish_34   (2007-12-18 22:24:00) [34]


> А бывает так, что на вход функции поступают значения NULL
> ?

нет, и условие есть+и проапдейтила специально, чтоб null не было


palva   (2007-12-18 22:02:00) [35]

А бывает так, что на вход функции поступают значения NULL ?


irish_34   (2007-12-18 19:00:00) [36]


> А это тогда как понимать

это вплане того, что ошибка об инструкции всё равно остаётся (даже в [18]), а [18] я пользовалась, собственно с ним функцией обрабатывается вся таблица не "спотыкаясь" о сторки, но


irish_34   (2007-12-18 18:56:00) [37]


> второе

я так и знала, плюс логика женщины ну ни как не совместима с логикой программиста ))))


Сергей М.   (2007-12-18 08:32:00) [38]


> irish_34   (17.12.07 21:34) [61]
>
> всё равно ни чё хорошо не работает


Как это "не работает" ?

А это тогда как понимать


> irish_34   (15.12.07 11:18) [37]
>
> кстати заработала она


?

И почему не воспользовалась шаблоном в [18] ?


Правильный_Вася   (2007-12-17 22:46:00) [39]

второе


irish_34   (2007-12-17 21:34:00) [40]

всё равно ни чё хорошо не работает, то ли это fb1 такой привередливый, то ли это ошибка ДНК


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо