[ 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. inv

    inv Banned

    Joined:
    3 Aug 2007
    Messages:
    261
    Likes Received:
    143
    Reputations:
    -58
    Host:....

    ???
     
  2. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    inv Дествительно жестоко :)
    Получить строку, обнулить и послать!
     
  3. 5p4x2kn3t

    5p4x2kn3t New Member

    Joined:
    6 Sep 2007
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Бли-и-и-и-ин =)) как это туда попало??!!)))) Спасибо.
     
    #583 5p4x2kn3t, 7 Sep 2007
    Last edited: 7 Sep 2007
  4. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    Это кто знает как зделать на винапи в ListView,чтобы новые записи при добавлении добавлялись сверху вниз ? Или Снизу вверх?
     
  5. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    PHP:
    //Определение колличества пунктов в ListBox
    function ListBox_GetItemCount(hListBoxHWND): Integer;
    begin
     Result 
    := SendMessage(hListBoxLB_GETCOUNT00);
    end;

    //Удаление определенного пункта в ListBox
    procedure ListBox_DeleteItem(hListBoxHWNDIndexInteger);
    begin
     SendMessage
    (hListBoxLB_DELETESTRINGIndex0);
    end;

    //Удаление всех пунктов в ListBox
    procedure ListBox_ClearItems(hListBoxHWND);
    begin
     SendMessage
    (hListBoxLB_RESETCONTENT00);
    end;

    //Добавление пункта в ListBox
    procedure ListBox_AddItem(hListBoxHWNDNewItemString);
    begin
     SendMessage
    (hListBoxLB_ADDSTRING0Integer(NewItem));
    end;

    //Добавление пункта в определенное место в ListBox
    procedure ListBox_InsertItem(hListBoxHWNDIndexIntegerNewItemString);
    begin
     SendMessage
    (hListBoxLB_INSERTSTRINGIndexInteger(NewItem));
    end;

    //Определение имени выделеного пункта в ListBox
    function ListBox_GetSelectedItem(hListBoxHWND): string;
    var
     
    IndexlenInteger;
     
    sstring;
     
    bufferPChar;
    begin
     Index 
    := SendMessage(hListBoxLB_GETCURSEL00);
     
    len := SendMessage(hListBoxLB_GETTEXTLENwParam(Index), 0);
     
    GetMem(bufferlen 1);
     
    SendMessage(hListBoxLB_GETTEXTwParam(Index), lParam(buffer));
     
    SetString(sbufferlen);
     
    FreeMem(buffer);
     
    Result := s;
    end;

    //Определение номера выделеного пункта в ListBox
    function ListBox_GetCountSelectedItem(hListBoxHWND): Integer;
    var
     
    IndexlenInteger;
     
    sstring;
     
    bufferPChar;
    begin
     Index 
    := SendMessage(hListBoxLB_GETCURSEL00);
     
    len := SendMessage(hListBoxLB_GETTEXTLENwParam(Index), 0);
     
    GetMem(bufferlen 1);
     
    SendMessage(hListBoxLB_GETTEXTwParam(Index), lParam(buffer));
     
    SetString(sbufferlen);
     
    FreeMem(buffer);
     
    Result := Index;
    end;

    //Определение имени пункта по номеру в ListBox
    function ListBox_GetItem(hListBoxHWNDLbItemInteger): string;
    var
     
    lInteger;
     
    bufferPChar;
    begin
     l 
    := SendMessage(hListBoxLB_GETTEXTLENLbItem0);
     
    GetMem(buffer1);
     
    SendMessage(hListBoxLB_GETTEXTLbItemInteger(buffer));
     
    Result := StrPas(buffer);
     
    FreeMem(buffer);
    end;

    //Выделение всех пунктов в ListBox
    procedure ListBox_SelAllItems(hListBoxHWND);
    var
     
    CountItemsiInteger;
    begin
     CountItems 
    := SendMessage(hListBoxLB_GETCOUNT00);
      if 
    CountItems 0 then exit;
      for 
    := 0 to CountItems do
       
    SendMessage(hListBoxLB_SETSELInteger(true), i);
    end;

    //Выбор пункта
    procedure ListBox_SelectedItem(hListBoxHWNDIndexInteger);
    begin
     SendMessage
    (hListBoxLB_SETCURSELIndex0);
    end;
    (c) Lenin_Inc
     
  6. Ni0x

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

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    Ну во-первых, нужно приводить код полностью, во-вторых, научиться пользоваться отладчиком.
     
  7. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    PandoraBox Реально попробуй сам найти ошибку как говорит Ni0x -Все просто!!!
    // P.S. Просто реально отпадут очевидные вопросы и многие непонятные проблемы, которые покажет отладчик в виде возврата из функций невалидного значения, по которому ТЫ сможешь судить о валидности параметров и ещё .....
     
  8. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
  9. yeti

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

    Joined:
    27 Dec 2006
    Messages:
    179
    Likes Received:
    234
    Reputations:
    346
    PandoraBox, хмм... API и дельфи... просто суешь после каждой строчки(подозрительной) мессаджбокс. тупо компилишь, запускаешь.. если не вылетает мессаджбокс - знач в пред строчке бага... ВСЕ
     
    2 people like this.
  10. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Так я эт уже закоментировал проблема именно где то здесь

    между
    Code:
    var
     OpenStr, SaveStr, DelemStr, BtnStart: PChar;
     FullF, ClearF: TextFile;
     i: integer;
     s: String;
    begin
        {Clear process}
        CurUpTimeHr := 0;
        CurUpTimeMin := 0;
        CurUpTimeSec := 0;
        Stop := False;  
    
        SetTimer(hWnd, 1, 1000, @TimerWork);
        GetDlgItemText(hWnd, 1, @OpenStr, MAX_PATH-1);
        GetDlgItemText(hWnd, 3, @SaveStr, MAX_PATH-1);
        GetDlgItemText(hWnd, 5, @DelemStr, MAX_PATH-1);
    и
    Code:
        AssignFile(FullF, OpenStr);
        Reset(FullF);
        AssignFile(ClearF, SaveStr);
        ReWrite(ClearF);
    
        try
         UpdateWindow(hWnd);
         while not EOF(FullF) do
         begin
          if Stop = True then
          begin
           CloseFile(FullF);
           CloseFile(ClearF);
           SetDlgItemText(hWnd, 8, 'Старт');
           KillTimer(hWnd, 1);
           EnableWindow(GetDlgItem(hWnd,1), True);
           EnableWindow(GetDlgItem(hWnd,2), True);
           EnableWindow(GetDlgItem(hWnd,3), True);
           EnableWindow(GetDlgItem(hWnd,4), True);
           Exit;
          end;
          i := i + 1;
          SetDlgItemText(hWnd, 6, PChar(IntToStr(i)));
          UpdateWindow(hWnd);
          ReadLn(FullF, s);
          if pos(DelemStr, s) > 0
           then WriteLn(ClearF, Copy(s, 0, pos(DelemStr, s) - 1));
          UpdateWindow(hWnd);
         end;
     
  11. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    Code:
    var
     OpenStr, SaveStr, DelemStr, BtnStart: PChar;
    // BtnStart-?
     FullF, ClearF: TextFile;
     i: integer;
     s: String;
    begin
        {Clear process}
        CurUpTimeHr := 0;
        CurUpTimeMin := 0;
        CurUpTimeSec := 0;
        Stop := False;  
    
        SetTimer(hWnd, 1, 1000, @TimerWork);
    
        GetDlgItemText(hWnd, 1, OpenStr, MAX_PATH-1);
        GetDlgItemText(hWnd, 3, SaveStr, MAX_PATH-1);
        GetDlgItemText(hWnd, 5, DelemStr, MAX_PATH-1);
    и
    Code:
        AssignFile(FullF, OpenStr);
        Reset(FullF);
        AssignFile(ClearF, SaveStr);
        ReWrite(ClearF);
    
        try
         UpdateWindow(hWnd);
         while not EOF(FullF) do
         begin
          if Stop = True then
          begin
           CloseFile(FullF);
           CloseFile(ClearF);
           SetDlgItemText(hWnd, 8, 'Старт');
           KillTimer(hWnd, 1);
           EnableWindow(GetDlgItem(hWnd,1), True);
           EnableWindow(GetDlgItem(hWnd,2), True);
           EnableWindow(GetDlgItem(hWnd,3), True);
           EnableWindow(GetDlgItem(hWnd,4), True);
           Exit;
          end;
          i := i + 1;
          SetDlgItemText(hWnd, 6, PChar(IntToStr(i)));
          UpdateWindow(hWnd);
          ReadLn(FullF, s);
          if pos(DelemStr, s) > 0
           then WriteLn(ClearF, Copy(s, 0, pos(DelemStr, s) - 1));
          UpdateWindow(hWnd);
         end;
    [/QUOTE]
    такс... ну и еще взгляну...
     
  12. Xserg

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

    Joined:
    9 Dec 2006
    Messages:
    135
    Likes Received:
    127
    Reputations:
    53
    PandoraBox
    procedure TimerWork(HWND,uMsg,idEvent,dwTime:dword);stdcall; <- Не забыл?
    begin end;
     
  13. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Забыл : stdcall; :B

    Code:
    procedure TimerWork;
    begin
     CurUpTimeSec := CurUpTimeSec + 1;
    
     if CurUpTimeSec = 60 then
     begin
       CurUpTimeSec  := 0;
       CurUpTimeMin  := CurUpTimeMin + 1;
     end;
    
     if CurUpTimeMin = 60 then
     begin
       CurUpTimeMin  := 0;
       CurUpTimeHr   := CurUpTimeHr + 1;
     end;
     SetDlgItemText(hWnd, 7, PChar(IntToStr(CurUpTimeHr) + ':' + IntToStr(CurUpTimeMin) + ':' + IntToStr(CurUpTimeSec)));
    end;
     
  14. Xserg

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

    Joined:
    9 Dec 2006
    Messages:
    135
    Likes Received:
    127
    Reputations:
    53
    Ну тогда делись кодом, где у тебя инициализация.
    OpenStr, SaveStr, DelemStr, BtnStart: PChar;
     
  15. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Code:
    function MainDlg(hWnd: HWND; msg: UINT; wParam: WPARAM; lParam: LPARAM): Integer; StdCall;
    var
     Open, Save, Delem, Btn: array [0..MAX_PATH-1] of Char;
     OpenStr, SaveStr, DelemStr, BtnStr: String;
       procedure TimerWork; stdcall;
       begin
        ......
       end;
     .....
    begin
     case msg of
     ......
       WM_COMMAND : begin
       if LOWORD(wParam) = 8 then
       begin
        .....
        GetDlgItemText(hWnd, 1, Open, SizeOf(Open));
        GetDlgItemText(hWnd, 3, Save, SizeOf(Save));
        GetDlgItemText(hWnd, 5, Delem, SizeOf(Delem));
        GetDlgItemText(hWnd, 8, Btn, SizeOf(Btn));
    
        OpenStr := Open;
        SaveStr := Save;
        DelemStr := Delem;
        BtnStart := Btn;
    
        SetTimer(hWnd, 666666, 1000, @TimerWork);
    
        if PChar(BtnStr) = 'Начать' then
        begin
         SetDlgItemText(hWnd, 8, 'Стоп');
         AssignFile(FullF, OpenStr);
         Reset(FullF);
         AssignFile(ClearF, SaveStr);
         ReWrite(ClearF);
         try
          UpdateWindow(hWnd);
          while not EOF(FullF) do
          begin
            .....
            UpdateWindow(hWnd);
          end;
         end;
       ....
      end;
    
    begin
     DialogBox(hInstance, 'MAIN', 0, @MainDlg);
    end.
    Зы пришлось мутить такую муть шоб нормально прочитало >:]

    Куда поместить ProcessMessages for WinAPI?
    Code:
    while GetMessage(m, hWnd, 0, 0) do begin
            TranslateMessage(m);
            DispatchMessage(m);
           end;
     
    #595 PandoraBox, 11 Sep 2007
    Last edited: 11 Sep 2007
  16. Ni0x

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

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    засовывай после CreateWindow и ShowWindow.
    Code:
    hwnd = CreateWindowEx(...);
    ShowWindow (hwnd, SW_SHOW);
    while (GetMessage (&messages, 0, 0, 0))
        {
           TranslateMessage(&messages);
            DispatchMessage(&messages);
        }
    
     
  17. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    есть DialogBox(hInstance, 'MAIN', 0, @MainDlg); ((
     
    #597 PandoraBox, 11 Sep 2007
    Last edited: 12 Sep 2007
  18. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    Пандора... честное слово =/
    на API же пишешь...я тебе скинул LENIN_INC там есть пример вызова MessageBox'a при событиях окна вплоть до его полного отображения...
    OnCreate
    OnPaint
    OnShow
    OnActive
    (что-то вроде этого)
    посмотри...
     
  19. Killerkod

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

    Joined:
    1 Aug 2007
    Messages:
    178
    Likes Received:
    113
    Reputations:
    0
    Значит так. Я изучаю делфи пару недель... Пока просто читаю и запоминаю))) Но вот хотел написать простую программку, которая бы при нажатии на кнопку выводила второе окно... И нефига не получается... Пишу
    Code:
     Form2.Show;
    А при компилляции он мне ошибку выдает! Один чел с кибер зоны мне дал свой вариант проги, там так же, но все работает! А у мну нет!
    Вот тут сам исходник - http://slil.ru/24853531
    Там в принципе только две формы, на одной есть кнопка, при ее нажатии я хочу чтоб вылазила вторая форма, но у мну не получается...
     
    #599 Killerkod, 14 Sep 2007
    Last edited: 14 Sep 2007
  20. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Killerkod Очевидно у тебя есть два модуля Unit1 и Unit2. Во втором Form2 - чтобы её показать с помошью Form2.Show; Нужно подключить\связать модуль 1 с модулем 2 -
    жми File -> Use unit -> вибираем Unit2 и должно все работать!

    // Killerkod лучше писать ошибки компиляции, так тебе быстрее помогут!
     
    1 person likes this.
Thread Status:
Not open for further replies.