[ 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. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Жаль, в PHP можно и имя назначить
     
  2. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Не надо 2 массивов если работаешь с текстом. есть варианты проще:
    TStringList
    Code:
    Пример кода : Использование строк название-значение var   names  : TStringList;            // Определение нашей переменной списка строк   ageStr : String;   i      : Integer; begin   // Определение объекта списка строк, и указание нашей переменной на него   names := TStringList.Create;    // Теперь добавляем несколько названия в наш список   names.CommaText := 'Neil=45, Brian=63, Jim=22';    // И теперь находим возраст Брайена   ageStr := names.Values['Brian'];    // Показ этого значения   ShowMessage('Возраст Brian'а = '+ageStr);    // Теперь отображаем все имена и значение возраста   for i := 0 to names.Count-1 do   begin     ShowMessage(names.Names[i]+' - '+names.ValueFromIndex[i]);   end; end; Возраст Brian'а 63 Neil - 45 Brian - 63 Jim - 22
    Источник: http://delphibasics.ru/TStringList.php
    Самое то для таких вещей
    И имена можно использовать
     
    #5402 GhostOnline, 8 Mar 2010
    Last edited: 8 Mar 2010
  3. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    В общем сделал в 2 массивами, думаю сам разберешься, что к чему. :D
    http://slil.ru/28760299
     
  4. NTFF

    NTFF New Member

    Joined:
    9 Dec 2009
    Messages:
    23
    Likes Received:
    0
    Reputations:
    0
    Помогите организовать поиск

    program Records;
    uses
    crt, strings;
    const
    max = 100;
    type

    Ttrain = record
    Otpravlenie : string[40];
    Pribitie : string[40];
    Category : string[10];
    Time : string[10];
    Number : string[10];
    end;

    Ttrains = array [1..max] of Ttrain;


    procedure SngWindow(x1,y1,x2,y2,tc,c : byte);
    begin
    window(x1,y1,x2,y2);
    textbackground(c); textcolor(tc);
    clrscr;
    end;


    procedure DblWindow(x1,y1,x2,y2,tcolor, c1, c2 : byte);
    begin
    window(x1,y1,x2,y2);
    textbackground(c1);
    clrscr;
    window(x1+1,y1+1,x2-1,y2-1);
    textbackground(c2);
    textcolor(tcolor);
    clrscr;
    end;


    function Menu : byte;
    var
    punkt : byte;
    er : integer;
    s : string;
    begin

    SngWindow(1,1,80,25,WHITE,BLACK);

    SngWindow(1,6,80,25,WHITE,BLUE);

    repeat

    DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
    writeln;
    write(' 1.ADD 2.DELETE 3.PRINT 4.SEARCH 5.EXIT');
    readln(s);
    val(s,punkt,er);
    until (er=0) and (punkt>=1) and (punkt<=5);
    Menu := punkt;
    end;


    function SubMenu : byte;
    var
    punkt : byte;
    er : integer;
    s : string;
    begin

    SngWindow(1,1,80,25,WHITE,BLACK);

    SngWindow(1,6,80,25,WHITE,BLUE);

    repeat
    {Нарисовать окно для главного меню}
    DblWindow(1,1,80,5,YELLOW,MAGENTA,BLUE);
    writeln;
    write(' 1.Otpravlenie 2.Pribitie 3.Number 4.Exit');
    readln(s); {ввод номера пункта меню}
    val(s,punkt,er);
    until (er=0) and (punkt>=1) and (punkt<=4);
    SubMenu := punkt;
    end;


    procedure AddRecord(var mas : Ttrains; var n : byte; size : byte);
    var
    s : String;
    er : integer;
    begin

    if (n+1 <= size) then
    begin
    inc(n);

    write('Otpravlenie =>'); readln(mas[n].Otpravlenie);
    write('Pribitie =>'); readln(mas[n].Pribitie);
    write('Category =>'); readln(mas[n].Category);
    write('Time =>'); readln(mas[n].Time);
    write('Number =>'); readln(mas[n].number);

    writeln('Книга добавлена в каталог!');
    end
    else writeln('Недостаточно места в каталоге!');
    end;


    procedure PrintRecord(var mas : Ttrains; i : integer);
    begin
    write(i:3);
    with mas do
    begin
    write(Otpravlenie:23); write(Pribitie:20);
    write(Category:10); write(Time:10);
    write(Number:12);
    writeln;
    end;
    end;

    procedure Print(var mas : Ttrains; n : integer);
    var
    i : integer;
    begin
    writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Category':10,'Time':10,'Number':12);
    for i:=1 to n do
    PrintRecord(mas,i);
    end;


    procedure DelRecordByName(var mas : Ttrains; var n : byte; bname : string);
    var
    i,j : integer; {номера книг в каталоге}
    begin
    writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Category':10,'Time':10,'Number':12);

    for i:=1 to n do
    begin
    with mas do

    if (Otpravlenie = otpravlenie) then
    begin
    PrintRecord(mas,i);

    for j:=i+1 to n do
    mas[j-1] := mas[j];

    dec(n);
    end;
    end;
    end;


    procedure FindByname(var mas : Ttrains; n : integer; botpravlenie : string);
    var
    i : integer;
    begin
    writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Category':10,'Time':10,'Number':12);

    for i:=1 to n do
    with mas do

    if otpravlenie=botpravlenie then PrintRecord(mas,i);
    end;

    procedure FindByauthor(var mas : Ttrains; n : integer; ba, bst : string);
    var
    i : integer;
    begin
    writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Category':10,'Time':10,'Number':12);

    for i:=1 to n do
    with mas do

    if (pribitie=ba) and (Category=bst) then PrintRecord(mas,i);
    end;


    procedure FindByyear(var mas : Ttrains; n : integer; Number : string);
    var
    i : integer;
    begin
    writeln('#':3,'Otpravlenie':23,'Pribitie':20,'Category':10,'Time':10,'Number':12);

    for i:=1 to n do
    with mas do

    if number=number then PrintRecord(mas,i);
    end;

    var
    b : Ttrains;
    n : byte;
    punkt : byte;
    subpunkt : byte;
    trainotprav,
    a,
    st : string;
    y : string;
    s : string;
    er : integer;

    begin
    n := 0;
    SngWindow(1,1,80,25,WHITE,BLACK);
    repeat
    punkt:= Menu;
    case (punkt) of
    1:begin
    SngWindow(1,6,80,25,WHITE,BLUE);
    writeln(' ADD train');
    AddRecord(b,n,max);
    readkey;
    end;
    2:begin
    SngWindow(1,6,80,25,WHITE,BLUE);
    writeln(' Delete by otpravlenie');

    write('Otpravlenie =>');
    readln(trainotprav);

    DelRecordByName(b,n,trainotprav);
    readkey;
    end;
    3:begin
    SngWindow(1,6,80,25,WHITE,BLUE);
    writeln(' Catalog of trains');
    Print(b,n);
    readkey;
    end;
    4:begin
    repeat
    subpunkt := SubMenu;
    case (subpunkt) of
    1:begin
    SngWindow(1,6,80,25,WHITE,BLUE);
    writeln(' Train by otpravlenie ');

    write('Otpravlenie =>');
    readln(trainotprav);

    readkey;
    end;
    2:begin
    SngWindow(1,6,80,25,WHITE,BLUE);
    writeln(' Train by pribitie and category ');

    write('Pribitie =>');
    readln(a);

    write('Category =>');
    readln(st);


    readkey;
    end;
    3:begin
    SngWindow(1,6,80,25,WHITE,BLUE);
    writeln(' Train by number ');

    write('number =>');
    readln(y);

    readkey;
    end;
    end;
    until (subpunkt = 4);
    end;
    end;
    until (punkt = 5);
    SngWindow(1,1,80,25,WHITE,BLACK);
    end.
    сделать поиск
    по станциям прибытия
    по станциях лтправления
    по времени в пути
    по номеру
     
  5. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Надо через ' '(Пробел), а не через '='
     
  6. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Вообще-то, разделитель вроде как можно изменять, написано в том мане. По дефолту - да, стоит "="

    Не, в том мане нет, ну вообще вот так:

     
    #5406 GhostOnline, 8 Mar 2010
    Last edited: 8 Mar 2010
  7. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    НTL, мой глянь, может устроит
     
    1 person likes this.
  8. ErrorNeo

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

    Joined:
    2 May 2009
    Messages:
    923
    Likes Received:
    838
    Reputations:
    402
    вопрос:
    Win7
    запускаем программу, имеем варнинг:
    Code:
    User Account Control
    Do you want to allow the following program from an unknown publisher make changes 
    to this computer?
    как программно нажать "Yes"?

    Пробовал мышью:
    Code:
    var TI:TInput;
    begin
    TI.Itype:=0;
    TI.mi.dx:= 37000;
    TI.mi.dy:= 37000;
    TI.mi.mouseData:=0;
    TI.mi.time:=0;
    TI.mi.dwFlags:=MOUSEEVENTF_MOVE+MOUSEEVENTF_ABSOLUTE;
    SendInput(1,TI,sizeof(TI));
    TI.mi.dwFlags:=MOUSEEVENTF_LEFTDOWN;
    SendInput(1,TI,sizeof(TI));
    TI.mi.dwFlags:=MOUSEEVENTF_LEFTUP;
    SendInput(1,TI,sizeof(TI));
    end.
    - под Win7 не катит.
    Code:
    SetCursorPos(500, 500);
    Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 500, 500, 0,0);
    Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 500,500,0,0)
    - под Win7 срабатывает, даже setpos не выполняется.

    Пробовал клавой:
    Code:
    procedure SetKey(Key:Integer);
    begin
      keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
      keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0);
      keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
    end;
    
    begin
       SetKey(VK_LEFT);
       SetKey(VK_RETURN);
    end;
    - сам по себе код работает (на активном окне), но конкретно на этом варнинге - нет.

    Не сильно рассчитываю на ответ, но если кто-то сталкивался - скажите)
     
    #5408 ErrorNeo, 9 Mar 2010
    Last edited: 9 Mar 2010
  9. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Хмм странно. Только что попробовал имитировать нажатие мыши на Win7, все получилось! Попробуй это

    Code:
    GetCursorPos(A)  // узнать текущее положение мыши (где A : TPoint)
    SetCursorPos(X,Y) // установить новое положение мыши
    mouse_event(MOUSEEVENTF_LEFTDOWN,X,Y,0,0) //нажать левой кнопки
    mouse_event(MOUSEEVENTF_LEFTUP,X,Y,0,0) //отпустить левую кнопку
    
    P.S наверное твоя проблема в том, что ты GetCursorPos(A) упустил :rolleyes:
     
    #5409 fenixelite, 9 Mar 2010
    Last edited: 9 Mar 2010
    1 person likes this.
  10. Seravin

    Seravin Active Member

    Joined:
    25 Nov 2009
    Messages:
    475
    Likes Received:
    190
    Reputations:
    221
    По моему тут лучше через handle делать.
    Нагло copy/paste, автора не знаю, но исходник очень даже наплохой
    Code:
    unit UMain;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Buttons, ComCtrls, StdCtrls, ExtCtrls, ExtDlgs, Menus;
    
    var
      fmWinapi: TfmWinapi;
      tnCurrent: TTreeNode;
      SelWindow: HWND;
    
    implementation
    var
     SelDC: HDC;
    
     NewStyle: LongInt;
     NewExStyle: LongInt;
     NewClassStyle: LongInt;
    
    {$R *.dfm}
    
    function GetIcon(wnd:hwnd):TIcon;
    begin
    result:=TIcon.Create;
    result.Handle:=GetClassLong(wnd,GCL_HICON);
    end;
    
    procedure SetIcon(wnd:hwnd; icon:TIcon);
    begin
    postmessage(wnd,wm_seticon,0,icon.Handle);
    end;
    
    function GetText(wnd:hwnd):string;
    var p:array [0..256] of char;
    begin
    with fmWinAPi do
    GetWindowText(wnd,p,255);
    result:=strpas(p);
    end;
    
    procedure TfmWinapi.GetWindowParams(Wnd: HWND);
    var
     I, WL: LongInt;
    
    begin
     WL:= GetWindowLong(wnd, GWL_STYLE);
     for I:= 0 to lvWndStyle.Items.Count -1 do
      if ((LongInt(lvWndStyle.Items[i].Data)) and WL) <> 0 then lvWndStyle.Items[i].Checked:= True else lvWndStyle.Items[i].Checked:= False;
    
     WL:= GetWindowLong(wnd, GWL_EXSTYLE);
     for I:= 0 to lvExWndStyle.Items.Count -1 do
      if ((LongInt(lvExWndStyle.Items[i].Data)) and WL) <> 0 then lvExWndStyle.Items[i].Checked:= True else lvExWndStyle.Items[i].Checked:= False;
    
     WL:= GetClassLong(wnd, GCL_STYLE);
     for I:= 0 to lvClassStyle.Items.Count -1 do
      if ((LongInt(lvClassStyle.Items[i].Data)) and WL) <> 0 then lvClassStyle.Items[i].Checked:= True else lvClassStyle.Items[i].Checked:= False;
    end;
    
    
    procedure TfmWinapi.GetWindowExParams(Wnd: HWND);
    var
     PParam: array[0..127] of Char;
     ProcId: LongInt;
     hInst: THandle;
     Rct: TRect;
    begin
    edWText.Text:= GetText(wnd); //Caption
    GetClassName(wnd, PParam, 128); //Class
    lbWClass.caption:= StrPas(PParam); //Class
    lbWHandle.caption:= IntToStr(wnd); //Handle
    lbWHmenu.caption:=IntToStr(GetMenu(wnd));// HMenu
    ImWIcon.Picture.Icon:=GetIcon(wnd);
    GetWindowText(GetParent(wnd), PParam, 127);//Parent Text
    EdPWText.text:= StrPas(PParam); //Parent Text
    lbPWHandle.caption:= IntToStr(GetParent(wnd));//Parent Handle
    GetWindowRect(Wnd, Rct);
    edWLeft.text:= IntToStr(Rct.Left);//Left
    edWTop.text:= IntToStr(Rct.Top);//Top
    edWWidth.text:= IntToStr(Rct.Right-Rct.Left);//Width
    edWHeight.text:= IntToStr(Rct.Bottom-Rct.Top);//Height
    edWRight.text:= IntToStr(Rct.Right);//Right
    edWBottom.text:= IntToStr(Rct.Bottom);//Bottom
    lbWDC.Caption:= IntToStr(SelDC); //DC
    hInst:= GetWindowLong((wnd), GWL_HINSTANCE);//HInstance
    lbWHinst.Caption:= IntToStr(hInst);
    GetWindowThreadProcessId(wnd, @ProcId);
    lbWProcId.Caption:= IntToStr(ProcId);//ProcId
    
    end;
    
    function ChildTree(Handle: HWND; Info: Pointer): BOOL; stdcall;
    var
     Text: array [0..256] of Char;
     tnParent: TTreeNode;
    begin
     GetWindowText(handle, text, 200);
     if Text <> '' then
      tnParent:= fmWinapi.tvList.Items.AddChildObject(tnCurrent, StrPas(Text), TObject(Handle))
     else begin
      GetClassName(Handle,text,255);
      tnParent:= fmWinapi.tvList.Items.AddChildObject(tnCurrent,text, TObject(Handle));
    end;
     tnParent.ImageIndex:= 1;
     tnParent.SelectedIndex:= 1;
     Result:= True;
    end;
    
    function ParentTree(Handle: HWND; Info: Pointer): BOOL; stdcall;
    var
     Text: array [0..256] of Char;
     tnParent: TTreeNode;
    begin
     GetWindowText(handle, text, 200);
     if (Text <> '') then
      tnParent:= fmWinapi.tvList.Items.AddObject(nil, StrPas(Text), TObject(Handle))
     else begin
      GetClassName(Handle,text,255);
      tnParent:= fmWinapi.tvList.Items.AddObject(nil, text, TObject(Handle));
      end;
     tnParent.ImageIndex:= 0;
     tnParent.SelectedIndex:= 0;
     Result:= True;
    end;
    
    procedure TfmWinapi.BuildTree;
    var
     i: integer;
    begin
      tvList.Items.Clear;
      EnumWindows(@ParentTree, 0);
      for i:= 0 to tvList.Items.Count do begin
          tnCurrent:= tvList.Items[i];
        EnumChildWindows(Integer(tvList.Items[i].Data), @ChildTree, 0);
      end;
    end;
    
    procedure TfmWinapi.FormCreate(Sender: TObject);
    var
     ListItem: TListItem;
    begin
     btnRefresh.Click;
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_POPUP';         ListItem.Data:= TObject($80000000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_CHILD';         ListItem.Data:= TObject($40000000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_MINIMIZE';      ListItem.Data:= TObject($20000000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_VISIBLE';       ListItem.Data:= TObject($10000000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_DISABLED';      ListItem.Data:= TObject($8000000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_CLIPSIBLINGS';  ListItem.Data:= TObject($4000000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_CLIPCHILDREN';  ListItem.Data:= TObject($2000000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_MAXIMIZE';      ListItem.Data:= TObject($1000000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_CAPTION';       ListItem.Data:= TObject($C00000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_BORDER';        ListItem.Data:= TObject($800000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_DLGFRAME';      ListItem.Data:= TObject($400000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_VSCROLL';       ListItem.Data:= TObject($200000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_HSCROLL';       ListItem.Data:= TObject($100000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_SYSMENU';       ListItem.Data:= TObject($80000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_THICKFRAME';    ListItem.Data:= TObject($40000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_GROUP';         ListItem.Data:= TObject($20000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_TABSTOP';       ListItem.Data:= TObject($10000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_MINIMIZEBOX';   ListItem.Data:= TObject($20000);
     ListItem:= lvWndStyle.Items.Add;  ListItem.Caption:= 'WS_MAXIMIZEBOX';   ListItem.Data:= TObject($10000);
    
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_DLGMODALFRAME';  ListItem.Data:= TObject(1);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_NOPARENTNOTIFY'; ListItem.Data:= TObject(4);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_TOPMOST';        ListItem.Data:= TObject(8);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_ACCEPTFILES';    ListItem.Data:= TObject($10);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_TRANSPARENT';    ListItem.Data:= TObject($20);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_MDICHILD';       ListItem.Data:= TObject($40);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_TOOLWINDOW';     ListItem.Data:= TObject($80);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_WINDOWEDGE';     ListItem.Data:= TObject($100);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_CLIENTEDGE';     ListItem.Data:= TObject($200);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_CONTEXTHELP';    ListItem.Data:= TObject($400);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_RIGHT';          ListItem.Data:= TObject($1000);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_RTLREADING';     ListItem.Data:= TObject($2000);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_LEFTSCROLLBAR';  ListItem.Data:= TObject($4000);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_CONTROLPARENT';  ListItem.Data:= TObject($10000);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_STATICEDGE';     ListItem.Data:= TObject($20000);
     ListItem:= lvExWndStyle.Items.Add;  ListItem.Caption:= 'WS_EX_APPWINDOW';      ListItem.Data:= TObject($40000);
    
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_VREDRAW';         ListItem.Data:= TObject(1);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_HREDRAW';         ListItem.Data:= TObject(2);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_KEYCVTWINDOW';    ListItem.Data:= TObject(4);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_DBLCLKS';         ListItem.Data:= TObject(8);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_OWNDC';           ListItem.Data:= TObject($20);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_CLASSDC';         ListItem.Data:= TObject($40);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_PARENTDC';        ListItem.Data:= TObject($80);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_NOKEYCVT';        ListItem.Data:= TObject($100);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_NOCLOSE';         ListItem.Data:= TObject($200);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_SAVEBITS';        ListItem.Data:= TObject($800);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_BYTEALIGNCLIENT'; ListItem.Data:= TObject($1000);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_BYTEALIGNWINDOW'; ListItem.Data:= TObject($2000);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_GLOBALCLASS';     ListItem.Data:= TObject($4000);
     ListItem:= lvClassStyle.Items.Add;  ListItem.Caption:= 'CS_IME';             ListItem.Data:= TObject($10000);
    
    end;
    
    
    
    procedure TfmWinapi.btnApplyClick(Sender: TObject);
    var i:integer;
    begin
     NewStyle:= 0;
     for i:= 0 to lvWndStyle.Items.Count -1 do begin
      if lvWndStyle.Items[i].Checked then NewStyle:= NewStyle or LongInt(lvWndStyle.Items[i].Data);
     end;
    
     NewExStyle:= 0;
     for i:= 0 to lvExWndStyle.Items.Count -1 do begin
      if lvExWndStyle.Items[i].Checked then NewExStyle:= NewExStyle or LongInt(lvExWndStyle.Items[i].Data);
     end;
    
     NewClassStyle:= 0;
     for i:= 0 to lvClassStyle.Items.Count -1 do begin
      if lvClassStyle.Items[i].Checked then NewClassStyle:= NewClassStyle or LongInt(lvClassStyle.Items[i].Data);
     end;
    
     SetWindowLong(SelWindow, GWL_STYLE, NewStyle);
     SetWindowLong(SelWindow, GWL_EXSTYLE, NewExStyle);
     SetClassLong(SelWindow, GCL_STYLE, NewClassStyle);
    
     SetWindowPos(SelWindow, HWND_TOP, StrToInt(EdWLeft.Text),StrToInt(EdWTop.Text), StrToInt(EdWWidth.Text), StrToInt(EdWHeight.Text), SWP_FRAMECHANGED);
     SetIcon(SelWindow,imWIcon.picture.icon);
    end;
    
    Урезал чутьчуть.

    Если хочешь могу проект просто кинуть
     
    #5410 Seravin, 9 Mar 2010
    Last edited: 9 Mar 2010
    1 person likes this.
  11. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    А че лучше то? Размер кода огромен, для того что бы всего лизь закрыть варнинг..... Хотя смотря что ТС дальше хочет делать....
     
  12. ErrorNeo

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

    Joined:
    2 May 2009
    Messages:
    923
    Likes Received:
    838
    Reputations:
    402
    ребят - благодарю.
    Под виртуалкой не видно, как курсор движется... - он как бы остается на месте. Но нажатие кнопки происходит - там, где нужно.
    "При нормальных условиях".

    Хотя нажать "yes" в UAC таким образом невозможно...=\
    Делаю sleep 5000, настраиваю клик в нужном месте, запускаю "опасную программу" - и фиг там) Не кликает оно по окну этому(
    По обычным окнам - нормально, а по варнингу от UAC - не хочет

    Буду изыскивать другие способы запустить программу, блокируемую UAC без вмешательства юзера=\

    ps. так же под дефолтным "недоадминским" аккаунтом в семерке заблочены такие консольные функции, как "net user" и "at". Обе доступны только "Built-in" администратору, аккаунт которого по умолчанию disabled.
    Включить его можно через lusrmgr.msc... а вот через net user - фиг(
    Кстати у built-in administrator UAC вообще отключен по дефолту... как и у SYSTEM я думаю.
    Тока как бы запуститься под ними из-под недоадмина без вмешательства пользователя.... :rolleyes: :confused:
     
    #5412 ErrorNeo, 9 Mar 2010
    Last edited: 9 Mar 2010
  13. noveek

    noveek New Member

    Joined:
    29 Dec 2008
    Messages:
    45
    Likes Received:
    4
    Reputations:
    1
    Привет античат вопрос в следующем:

    Как можно реализовать в Delphi seeders через сайт ?
    Делаю некое подобие торрента
     
  14. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    Как очистить куки в IdCookieManager1?
     
  15. Скотти

    Скотти Member

    Joined:
    17 Sep 2009
    Messages:
    23
    Likes Received:
    8
    Reputations:
    0
    Если не ошибаюсь))
    IdCookieManager1.CookieCollection.Clear;
     
    1 person likes this.
  16. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    TIdCookieManager.CookieCollection.Delete();

    Скотти, Точнее Delete() :rolleyes:
     
    #5416 fenixelite, 10 Mar 2010
    Last edited: 10 Mar 2010
    2 people like this.
  17. qwert135

    qwert135 New Member

    Joined:
    22 Nov 2009
    Messages:
    53
    Likes Received:
    0
    Reputations:
    0
    Народ,помогите плиз, с задачей на паскале.Найти корни квадратного трехчлена с заданными комплексными коэффициентами(при решении использовать тип запись).По идее раз коэффициенты комплексные,значит и решение должно быть комплексным числом,только как сделать тип для работы с ними я понять не могу.
     
  18. Nizhegorodets

    Nizhegorodets Member

    Joined:
    21 Mar 2009
    Messages:
    80
    Likes Received:
    66
    Reputations:
    9
    Как так сделать, чтобы:
    Если компонент Webbrowser полностью загрузил страничку сайта, то выполняется какое-либо действие.
     
  19. AquaKlaster

    AquaKlaster Active Member

    Joined:
    9 Mar 2009
    Messages:
    0
    Likes Received:
    204
    Reputations:
    23
    У Webbrowser есть событие OnDocumentComplite, оно тебе и поможет выполнить какое-либо действие когда страницы сайта загрузится полностью=)
     
    1 person likes this.
  20. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    В каком спискЕ? Как это с Delphi связано? Оо
     
Thread Status:
Not open for further replies.