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

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

    Joined:
    10 Oct 2012
    Messages:
    51
    Likes Received:
    54
    Reputations:
    81
    В чем неправильность моей логики, никак не пойму.. по разному пробовал , почему-то 30 все время выводит бесконечно..
    Code:
    procedure TForm1.btn3Click(Sender: TObject);
    var
      i,k: integer;
    begin
      i:=0;
      k:=30;
      while k<60 do begin
    
             while i< mmo1.lines.count do
             begin
             if Pos(';'+inttostr(k)+';',mmo1.Lines[i])>0 then
             mmo2.Lines.Add(mmo1.lines[i]);
             end;
       Inc(k);
       Inc(i);
      end;
      end;
    
     
  2. Freedom

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

    Joined:
    2 Jul 2007
    Messages:
    38
    Likes Received:
    92
    Reputations:
    8
    Code:
    procedure TForm1.btn3Click(Sender: TObject);
    var
      i,k: integer;
    begin
      i:=0;
      k:=30;
      while k<60 do begin
    
             while i< mmo1.lines.count do
             begin
             if Pos(';'+inttostr(k)+';',mmo1.Lines[i])>0 then
             mmo2.Lines.Add(mmo1.lines[i]);
            [B] [COLOR=DarkRed]Inc(i);[/COLOR][/B]
             end;
       Inc(k);
       
      end;
      end;
    

    неправильно инкремент i стоял. она в цикле не менялась.
     
  3. Freedom

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

    Joined:
    2 Jul 2007
    Messages:
    38
    Likes Received:
    92
    Reputations:
    8

    FileSearch заюзай.
     
  4. Protocoler

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

    Joined:
    10 Oct 2012
    Messages:
    51
    Likes Received:
    54
    Reputations:
    81
    Та я пробовал и так и как угодно.. Но цикл срабатывает 1 раз только... допустим у меня строки
    ;30;
    ;31;
    ;30;
    ;45;
    ;30;
    Он только строки с 30 выводит и все, тоесть i как буд-то не увеличивается.. у тебя работет, мб это у меня с Делфи трабла ?
     
    1 person likes this.
  5. Freedom

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

    Joined:
    2 Jul 2007
    Messages:
    38
    Likes Received:
    92
    Reputations:
    8

    Вкурил что ты хочешь ))). Вначале каждого цикла while k<60 обнуляй i, после первого цикла i=mmo1.lines.count, и больше не изменяется. В этом и ошибка.
     
    1 person likes this.
  6. Protocoler

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

    Joined:
    10 Oct 2012
    Messages:
    51
    Likes Received:
    54
    Reputations:
    81
    Freedom , спасибо. Врубил. Че то не внимательный я )) .


    Не могу найти какие заголовки есть у Mess.Header ? ( Так как они тут по другому называются чем в хидерах на почтовых сервисах ) , допустим есть такие :
    Mess.Header.From
    Mess.Header.Priority
    Mess.Header.XMailer
    Mess.Header.ReplyTo
    Mess.Header.ToList
    Mess.Header.Subject
    Mess.Header.CustomHeaders
    Mess.Header.CharsetCode

    а какие еще есть подскажите пожалуйста
     
    2 people like this.
  7. demko

    demko New Member

    Joined:
    19 Nov 2009
    Messages:
    13
    Likes Received:
    2
    Reputations:
    1
    скрин delphi winapi

    Есть код на делфи:
    Code:
    procedure Screenshot(shot: string);
     var
      dibH : hBitmap;
      bits : pointer;
      info : TBITMAPINFO;
      width,height : integer;
      screenDC,dibDC : hDC;
      f : file of byte;
      FileHeader : TBITMAPFILEHEADER;
    begin
        screenDC := getDC(getDeskTopWindow);
        dibDC := createCompatibleDC(screenDC);
        width := getDeviceCaps(screenDC,HORZRES);
        height := getDeviceCaps(screenDC,VERTRES);
        info.bmiHeader.biXPelsPerMeter := round(getDeviceCaps(screenDC,LOGPIXELSX)*39.37);
        info.bmiHeader.biYPelsPerMeter := round(getDeviceCaps(screenDC,LOGPIXELSY)*39.37);
        zeromemory(@info,sizeOf(info));
        with info.bmiHeader do
        begin
             biSize := sizeOf(TBITMAPINFOHEADER);
             biWidth := width;
             biheight := height;
             biplanes := 1;
             biBitCount := 24;
             biCompression := BI_RGB;
        end;
        dibH := createDIBSection(dibDC,info,DIB_RGB_COLORS,bits,0,0);
        selectObject(dibDC,dibH);
        bitblt(
               dibDC,
               0,0,width,height,
               screenDC,
               0,0,
               SRCCOPY);
        releaseDC(getDeskTopWindow,screenDC);
        assignFile(f,shot);
        reWrite(f);
    
        if width and 3 <> 0 then
           width := 4*((width div 4)+1);
    
        with fileHeader do
        begin
             bfType := ord('B')+(ord('M')shl 8);
             bfSize := sizeOf(TBITMAPFILEHEADER)+sizeOf(TBITMAPINFOHEADER)+width*height*3;
             bfOffBits := sizeOf(TBITMAPINFOHEADER);
        end;
    
        blockWrite(f,fileHeader,sizeOf(TBITMAPFILEHEADER));
        blockWrite(f,info.bmiHeader,sizeOf(TBITMAPINFOHEADER));
        blockWrite(f,bits^,width*height*3);
        closeFile(f);
        deleteObject(dibH);
        deleteDC(dibDC);
    end;
    begin
    Screenshot('C:\duvsu.jpg'); end.
    он делает скрин экрана, тока скрин получается слишком большого размера в мб, как не жертвуя качеством ужать всё это дело, хелп?
     
  8. Protocoler

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

    Joined:
    10 Oct 2012
    Messages:
    51
    Likes Received:
    54
    Reputations:
    81
    Подскажите пожалуйста, Как в Регион загрузить jpeg картинку, а то не получается (
     
    1 person likes this.
  9. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    ясен перец, что если ты формируешь битмап и пишешь его в файл с именем 'C:\duvsu.jpg', то от этого он JPEG'ом не станет, а так и останется BMP, если нужно сжатие без потерь, то конвертируй в PNG, например через GDI+, либо что-то другое юзай
     
    1 person likes this.
  10. Muhammad25

    Muhammad25 New Member

    Joined:
    1 Dec 2013
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Имеется файл на хостинге: mysite.ru/file.txt. Программа должна
    дождаться пока файл изменится (значение не равно 'empty') и
    выполнить определенное действие. Пожалуйста подскажите,
    как реализовать это на Дельфи.
     
  11. Protocoler

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

    Joined:
    10 Oct 2012
    Messages:
    51
    Likes Received:
    54
    Reputations:
    81
    Если файл в открытом доступе то просто делаешь

    Get запрос на него и проверяешь переменную, код который возвращается.. а далее используй
    if else . Ставь свои условия.
     
    1 person likes this.
  12. Protocoler

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

    Joined:
    10 Oct 2012
    Messages:
    51
    Likes Received:
    54
    Reputations:
    81
    Хелп, нужно изменить длину массива
    Code:
    arra = array[1..9] of string[9];
    Ругается на тип массива:
    Code:
    SetLength([B]arra[/B], Length(arra)-1);
    Вот так ( по ряду причин ) не катит, пробовал :
    Code:
    type
    arra = array[1..9] of string[9];
    
    
    и так
    
    System.SetLength(arra, Length(arra)-1);
    
    
    Заранее очень благодарен
     
  13. grimnir

    grimnir Members of Antichat

    Joined:
    23 Apr 2012
    Messages:
    1,114
    Likes Received:
    830
    Reputations:
    231
    Динамический массив самое то,границы указывать не надо!
    var
    arra: array of String;
    ....
    SetLength(arra, 8);
     
    _________________________
  14. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    естественно компиль будет ругаться, когда статический массив попытаешься "раздвинуть" через SetLength:
    Code:
    var
      myArray = array of String[9];
      ...
      cdCount:= 8;
      SetLength(myArray, cdCount);
    
      for i:= 0 to cdCount - 1 do begin
        ...
        myArray[i]:= ...;
      end;
    
     
    1 person likes this.
  15. Protocoler

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

    Joined:
    10 Oct 2012
    Messages:
    51
    Likes Received:
    54
    Reputations:
    81
    Спасибо, это решил, но теперь другие ошибки ..черт ))
     
  16. fai

    fai New Member

    Joined:
    22 Oct 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    подскажите пожалуйста, как можно восстановить удаленную историю скайпа?

    Skype log View, Sqlite есть пробовал для просмотра папки скайп на маке (main.db), но они показывают только контактов, и даты чатов, но сами сообщения удалены (так как была удалена история)...в общем, эти программы особо не помогли... Но, на маке, в папке пользователя скайп остались файлы формата .dat - где я вижу зашифрованную переписку между пользователем и разными его контактами (понял, что это переписка путем переименования в .txt). Подскажите, пожалуйста, как я могу сделать читабельными эти файлы? Это очень важно, уже весь интернет почти перерыл. Я хоть часть переписки смогу восстановить, если всю историю нереально будет вернуть. Спасибо большое заранее всем профессионалам!
     
  17. Testosteron

    Testosteron New Member

    Joined:
    18 Jun 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Как вытащить Response Content из ответа сервера?
    Пробовал так: if Pos('{"action":"needLogin","success":true,"message"', HTTP.Response.ResponseText)<>0 then - не парсит.
     
  18. Protocoler

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

    Joined:
    10 Oct 2012
    Messages:
    51
    Likes Received:
    54
    Reputations:
    81
    Во первых читайте название темы. Вам в другой раздел совсем. Во вторых, если у вас виндовс (" пробовал на маке" , у вас мак или винда ?) - Пуск- Обслуживание - Архивация и восстановление. Ищите папку с логами и восстанавливаете, если вы конечно не затирали всю память ( не путайте с удалением с корзины Зыы ) . Или просто сделайте откат системы на нужное число. На маке гребу как.



    так а что после then

    И какую библиотеку вы используете ?

    Synapse или indy ? А то меня харит на обе расписывать.



    Мой вопрос :
    all - строка с 9 символами .

    Code:
    for v:=0 to 8 do
           begin
    
            res:=all[random(Length(all))+1];
            result:=result+res;
            if Pos(res,all)>0 then
            delete(res,Pos(res,all),Pos(res,all));
            res:='';
            mmo1.lines.Add(all); // просто проверяю
    end;
    Так вот, не могу добиться чтобы сработала
    delete(res,Pos(res,all),Pos(res,all));
    мне из строки all нужно удалить символ который выдал рендом , то есть позицию содержимого res
     
    #9498 Protocoler, 15 Jan 2014
    Last edited: 15 Jan 2014
  19. WendM

    WendM Member

    Joined:
    29 Jan 2012
    Messages:
    44
    Likes Received:
    7
    Reputations:
    3
    ...............................
     
    #9499 WendM, 15 Jan 2014
    Last edited: 22 Jan 2014
  20. WendM

    WendM Member

    Joined:
    29 Jan 2012
    Messages:
    44
    Likes Received:
    7
    Reputations:
    3
    Как Вы делаете запрос?
    Вот как можно.
    Code:
    var
      IdHTTP: TIdHTTP;
      Html: String;
      Data: TStringList;
    begin
    ...
      Html := IdHTTP.GET('http://site.ru/page.html');
      //В Html запишется html код страницы http://site.ru/page.html
    
      или 
    
      Html := IdHTTP.POST('http://site.ru/page.php', Data);
      //В Html запишется ответ сервера, в Вашем случае {"action":"needLogin","success":true,"message"
      //Далее делаете Pos
      if Pos('{"action":"needLogin","success":true,"message"', Html) > 0 then
    
     
Thread Status:
Not open for further replies.