Показать сообщение отдельно
Старый 26.01.2008, 12:39   #49
Пользователь
 
Аватар для skymanrus
 
Регистрация: 28.12.2007
Сообщений: 54
Сказал Спасибо: 0
Имеет 40 спасибок в 10 сообщенях
skymanrus пока неопределено
По умолчанию

символы тоже не передаются не массив не даже один простейший char :)
но я нашёл выход ! :))
написал такую функцию

delphi
Код:
function proc: integer; stdcall;
var
i: Byte;
begin
if (res=0) then res:=1;
alfav[1]:='q';
alfav[2]:='w';
alfav[3]:='e';
alfav[4]:='r';
alfav[5]:='t';
alfav[6]:='y';
alfav[7]:='u';
alfav[8]:='i';
alfav[9]:='o';
alfav[10]:='p';
alfav[11]:='a';
alfav[12]:='s';
alfav[13]:='d';
alfav[14]:='f';
alfav[15]:='g';
alfav[16]:='h';
alfav[17]:='j';
alfav[18]:='k';
alfav[19]:='l';
alfav[20]:='z';
alfav[21]:='x';
alfav[22]:='c';
alfav[23]:='v';
alfav[24]:='b';
alfav[25]:='n';
alfav[26]:='m';
alfav[27]:=' ';
alfav[28]:='0';
alfav[29]:='1';
alfav[30]:='2';
alfav[31]:='3';
alfav[32]:='4';
alfav[33]:='5';
alfav[34]:='6';
alfav[35]:='7';
alfav[36]:='8';
alfav[37]:='9';
alfav[38]:='A';
alfav[39]:='B';
alfav[40]:='C';
alfav[41]:='D';
alfav[42]:='E';
alfav[43]:='F';
alfav[44]:='й';
alfav[45]:='ц';
alfav[46]:='у';
alfav[47]:='к';
alfav[49]:='е';
alfav[50]:='н';
alfav[51]:='г';
alfav[52]:='ш';
alfav[53]:='щ';
alfav[54]:='з';
alfav[55]:='х';
alfav[56]:='ё';
alfav[57]:='ф';
alfav[58]:='ы';
alfav[59]:='в';
alfav[60]:='а';
alfav[61]:='п';
alfav[62]:='р';
alfav[63]:='о';
alfav[64]:='л';
alfav[65]:='д';
alfav[66]:='ж';
alfav[67]:='э';
alfav[68]:='я';
alfav[69]:='ч';
alfav[70]:='с';
alfav[71]:='м';
alfav[72]:='и';
alfav[73]:='т';
alfav[74]:='ь';
alfav[75]:='б';
alfav[76]:='ю';
alfav[77]:='.';

 ST := 'bk sk jktu 3435 жил был олег.';
for i := 1 to Length(ST) do
begin
   Ch[i] := ST[i];
end;

Result:=-1;

for i := 1 to Length(alfav) do
begin
   if ((Ch[res]='') and (Ch[res+1]='')) then
   begin
   Result:=-9;
   res:=1;
   break;
   end;
   if (alfav[i]=Ch[res]) then
   begin
   Result:=i;
   break;
   end;

end;

res:=res+1;
End;
пакет хак
Код:
//обьявляю тут точно такой же массив alfav
for i := 1 to 255 do
begin
reshd:=CallFunction(lib,'proc',0,[0]);
  if (reshd=-9) then break;
  dfg:=dfg+alfav[reshd];
end;
frm := TForm.Create(nil);
frm.Caption := dfg;
короче строка разбивается на символы и по символам передаётся в виде integer а затем собирается в пакетхаке :)
скрипт пашет довольно таки быстро и все обходится без всяких там ShareMem, borlndmm.dll и FastShareMem
все равно они не пашут :)
__________________
На людей сердишся, когда чувсивуешь, что их поступки важны. Ничего подобного я больше не чувствую...
skymanrus вне форума   Ответить с цитированием