[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. Markus_13

    Markus_13 Member

    Joined:
    19 Feb 2009
    Messages:
    74
    Likes Received:
    19
    Reputations:
    0
    сумничал типа?))
    попробуй выцепи второй параметр из строки
    Code:
    parameter1:::parameter2:::parameter3  :::parameter4:::
    :(
     
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Функция и кривая но работает.
    MYLIST - это тип который содержит кол-во найденных элементов и сам массив элементов. Массив динамический по этому нужно будет юзать вконце функции типа setlength(mas,0) чтобы память не терять.

    Code:
    type
     MYLIST=record
      count:integer;
      data:array of string;
     end;
    
    procedure Explode(gde:string;kak:string;var list:MYLIST);
    var
     p:integer;
     n:integer;
    begin
     n:=0;
     repeat
       p:=pos(kak,gde);
       if p>0 then
        begin
          inc(n);
          setlength(list.data,n);
          list.data[n-1]:=copy(gde,1,p-1);
          delete(gde,1,p+length(kak)-1);
        end;
      until p=0;
     list.count:=n;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
     mas:MYLIST;
    begin
     Explode('::::::parameter1:::parameter2:::parameter3:::parameter4:::',':::',mas);
     showmessage(mas.data[3]);
    end;
    
     
    1 person likes this.
  3. Stil Free

    Stil Free New Member

    Joined:
    20 Dec 2008
    Messages:
    28
    Likes Received:
    4
    Reputations:
    2
    Парни как с помощью ICQ клиента получить контакт лист уина и добавить в лист бокс? Использую ICQ клиента
     
  4. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    ICQClient.pas:
    PHP:
    FContactLst := TStringList.Create;    //Contact list
    ..
    {
    Requests server side contact list. For more info look at OnServerListRecv event.}
    procedure TICQClient.RequestContactList;
    ..
    Your project:
    PHP:
    icq TIcqClient;
    ..
    icq.RequestContactList;
    ContactList := a.ContactLst;
    большое обсуждение компонента:
    http://forum.asechka.ru/showthread.php?t=97186&page=2
     
    1 person likes this.
  5. Stil Free

    Stil Free New Member

    Joined:
    20 Dec 2008
    Messages:
    28
    Likes Received:
    4
    Reputations:
    2
    ContactList := a.ContactLst; вот это поподробнее мона?
     
  6. Markus_13

    Markus_13 Member

    Joined:
    19 Feb 2009
    Messages:
    74
    Likes Received:
    19
    Reputations:
    0
    бред какой-то, вообще кусок непойми чего
    вообще в TIcqClient юзается RequestContactList, потом срабатывает OnServerListRecv, но щас непашет (у меня по крайней мере с версией компонента 1.341, после запроса от сервера вообще ответа нету)
    З.Ы. клиент вообще если честн пора выкидывать, надо самому в оскар-протоколе разбираться и учить снаки)
     
  7. ytre4k0

    ytre4k0 New Member

    Joined:
    13 Apr 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    приведите пример принудительного завершения процесса outpost.exe если такое возможно.
     
  8. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Просто OpenProcess/TerminateProcess не будет работать, OutPost перехватывает
    сервисы NtOpenProcess/NtTerminateProcess в SSDT, поэтому если только снять
    перехваты через rku или SDT restore
     
  9. Markus_13

    Markus_13 Member

    Joined:
    19 Feb 2009
    Messages:
    74
    Likes Received:
    19
    Reputations:
    0
    завершение процесса по имени модуля (если стоит запрет - завершить нельзя будет ;) )
    Code:
    //...
    function getDebugPriv:boolean;var tkp,tpo:TOKEN_PRIVILEGES;
    hToken,f:cardinal;sedebugnameValue:int64;begin
    if not OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken)
    then begin result:=false;exit;end;
    if not LookupPrivilegeValue(nil,'SeDebugPrivilege',sedebugnameValue)
    then begin result:=false;CloseHandle(hToken);exit;end;
    tkp.PrivilegeCount:=1;
    tkp.Privileges[0].Luid:=sedebugnameValue;
    tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken,FALSE,tkp,sizeof(tkp),tpo,f);
    CloseHandle(hToken);result:=true;end;
    
    function TaskKill(exe:string):boolean;var cl:BOOL;sh:THandle;
    pe:TProcessEntry32;begin result:=false;
    sh:=CreateToolhelp32Snapshot($00000002,0);pe.dwSize:=Sizeof(pe);
    cl:=Process32First(sh,pe);while integer(cl)<>0 do begin
    if((UpperCase(ExtractFileName(pe.szExeFile))=UpperCase(exe))
    or(UpperCase(pe.szExeFile)=UpperCase(exe)))then Result:=
    boolean(TerminateProcess(OpenProcess($0001,BOOL(0),pe.th32ProcessID),0));
    cl:=Process32Next(sh,pe);end;CloseHandle(sh);end;
    
    //...
    var mn:string;begin
    getDebugPriv;mn:='outpost.exe';
    showMessage(mn+' killed: '+BoolToStr(TaskKill(mn),true));
    //...
     
  10. Markus_13

    Markus_13 Member

    Joined:
    19 Feb 2009
    Messages:
    74
    Likes Received:
    19
    Reputations:
    0
    а как это из узермода сделать?))
     
  11. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 0verbreaK В SSDT из юзермода просто так не пролезиш без эксплоитов. Тока драйвером, а на счет дарйвера - тут можно даже и не снимать хуки а напрямую адреса вызывать Zw функций. Если конечно же нет сплайсинга.
     
  12. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    я сказал обратное?
     
  13. Markus_13

    Markus_13 Member

    Joined:
    19 Feb 2009
    Messages:
    74
    Likes Received:
    19
    Reputations:
    0
    т.е. чтобы просто кол-во вывелось? тогда в твоем примере - 2 должно вывести?
     
    1 person likes this.
  14. Markus_13

    Markus_13 Member

    Joined:
    19 Feb 2009
    Messages:
    74
    Likes Received:
    19
    Reputations:
    0
    вот 1ая (писал на TurboPascal)
    Code:
    program Z1;
    uses crt;
    const r=10;
    var m:array[1..r]of integer;
    i,j,k:integer;
    begin
    clrscr;
    randomize;
    for i:=1 to r do m[i]:=random(10);
    write(' Array:');
    for i:=1 to r do write(' ',m[i]);
    writeln;
    j:=m[1];
    for i:=1 to r do if m[i]<j then j:=m[i];
    writeln(' Minimal value = ',j);
    k:=0;
    for i:=1 to r do if m[i]=j then inc(k);
    writeln(' Minimal count = ',k);
    readkey;
    end.
     
    #3174 Markus_13, 19 Apr 2009
    Last edited: 19 Apr 2009
  15. Markus_13

    Markus_13 Member

    Joined:
    19 Feb 2009
    Messages:
    74
    Likes Received:
    19
    Reputations:
    0
    вот 2ая - также на ТурбоПаскале
    Code:
    program Z2;
    uses crt;
    const r=13;
    var m,m2:array[1..r]of integer;
    i:integer;
    begin
    clrscr;
    randomize;
    for i:=1 to r do m[i]:=random(20)-10;
    write(' First Array:');
    for i:=1 to r do write(' ',m[i]);
    writeln;
    for i:=1 to r do if m[i]<0 then m2[i]:=m[i]-7 else m2[i]:=m[i]*3;
    write(' Second Array:');
    for i:=1 to r do write(' ',m2[i]);
    writeln;
    readkey;
    end.
    З.Ы. первую подправил чуть)
     
  16. Stil Free

    Stil Free New Member

    Joined:
    20 Dec 2008
    Messages:
    28
    Likes Received:
    4
    Reputations:
    2
    Согласен там ничего полезного у меня TIcqClient 1.341 у меня вроде всё пашет и соединяется и письма отсылает только трабла с контакт листом вот код глянь что не так, а то прогу запускаю он контакт лист не грузит всё вроде правильно.
    Code:
    procedure TForm1.ICQclient1ServerListRecv(Sender: TObject;    SrvContactList: TList); 
     var      mk: Word;      
    
    UserInfo: TUINEntry;    
    
    begin       if SrvContactList.Count > 0 then        
     for mk := 0 to SrvContactList.Count - 1 do         
    begin           
    UserInfo := PUINEntry(SrvContactList.Items[mk])^;           
    ListBox1.Items.Add(inttostr(userinfo.uin));          
     icqclient1.RemoveContact(userinfo.uin);  
    end;       
    ICQClient1.DestroyUINList(SrvContactList);    
    end;
    
    И запускаю получение контактов когда происходит логин
    Code:
    ICQclient1.RequestContactList;
    всё вроде правильно... А список так и не идёт в чём ошибка? или клиент сдулся?
     
  17. Markus_13

    Markus_13 Member

    Joined:
    19 Feb 2009
    Messages:
    74
    Likes Received:
    19
    Reputations:
    0
    я тоже КЛ получить не могу, пробовал с SSL работать - у меня тоже не пашет, хотя вроде правильно, видать последнее изменение протокола было серьезным...
    короче халява кончилось - надо самому вникать в оскар-протокол))
     
    3 people like this.
  18. BlackFan

    BlackFan Member

    Joined:
    3 Jan 2009
    Messages:
    47
    Likes Received:
    40
    Reputations:
    32
    Как сделать, чтобы функция в делфи возвращала динамический массив?
     
  19. Stil Free

    Stil Free New Member

    Joined:
    20 Dec 2008
    Messages:
    28
    Likes Received:
    4
    Reputations:
    2
    это самоубийство я ещё совсем молод и хочу пожить нормально)
     
  20. Baofy

    Baofy Member

    Joined:
    26 Feb 2009
    Messages:
    12
    Likes Received:
    72
    Reputations:
    7
    СРОЧНО помогите!
    1) Заполнить масив A(n,m) единицами по главной диагонали остальные элементы произвольные числа. Заполнить массив по второй диагонали значением суммы элементов по 2 строке массив распечатать.
     
    2 people like this.
Thread Status:
Not open for further replies.