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

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

    Joined:
    11 Jan 2008
    Messages:
    15
    Likes Received:
    23
    Reputations:
    0
    hexb() мне надо вроде....
     
  2. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    CSCA1 := GetProcAddress(hDll, 'CSCA1');
     
    1 person likes this.
  3. diznt

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

    Joined:
    31 Jan 2008
    Messages:
    432
    Likes Received:
    164
    Reputations:
    -19
    Народ как реализовать так чтобы прога не слишком много жрала памяти (ну то есть по минимуму)
     
  4. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    Есть ли функция в Windows API, позволяющая получить текущий каталог?
     
  5. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    GetCurrentFolder,но лучше через GetModuleFileNameA(0) и извлечь путь.
     
    2 people like this.
  6. 0x0c0de

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

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    >>Есть ли функция в Windows API, позволяющая получить текущий каталог?

    GetCurrentDirectory и не надо ничего извлекать=)

    http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx
     
  7. diznt

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

    Joined:
    31 Jan 2008
    Messages:
    432
    Likes Received:
    164
    Reputations:
    -19
    Народ как редактировать реестр с помощью проги к примеру запускаешь прогу и она параметры редактирует
     
  8. W!z@rD

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

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    (c) DelphiWorld
     
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Стандартный модуль Registry есть и тип TRegistry
     
  10. vspv

    vspv New Member

    Joined:
    28 May 2008
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    как работать на delphi (lazarus'e) с текстовыми файлами со строками более 255 символов длиной?
    неужели только посимвольно читать и бить на приемлимые строки?

    вопрос решен использованием ansistring
     
    #1790 vspv, 26 Jun 2008
    Last edited: 26 Jun 2008
  11. A2GIL

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

    Joined:
    31 Aug 2007
    Messages:
    84
    Likes Received:
    59
    Reputations:
    -3

    Самое большое количество символов, которое можно использовать в Delphi. Нужно создать тип.

    Code:
    
    
    type
      TStr = array[0..1024] of Char;
      LngStr = ^TStr;
    
    var
      Buffer: LngStr;
      ...
    
      New(Buffer);
    
    
      ReadLn(F, Buffer^);
    
    



    Читай статьи по оптимизации кода. Можешь в типсах здесь же поискать, как то видел. Пару советов

    1) Если ты часто используешь для переменных один и тот же тип, integer, к примеру, то лучше создать тип и потом ссылаться на него

    type
    myInt = Int64;

    ...

    var
    i:myInt;
    ...

    2) Если переменная не становится отрицательной то не зачем ей присваивать значение integer. Присвой лучше word :) Ну если это переменная счетчака, то как правило присваивают byte.

    вообщем все в таком духе.. :)
     
    #1791 A2GIL, 26 Jun 2008
    Last edited: 26 Jun 2008
  12. Dober'man

    Dober'man Banned

    Joined:
    16 Jul 2007
    Messages:
    70
    Likes Received:
    94
    Reputations:
    -8
    Насколько я понял F у тебя типа text, то как же тогда команда ReadLn, которая считывает из файла строки, укажет строку - адресом одного символа?!?!?!

    Я писал в типсах про множества...
     
  13. A2GIL

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

    Joined:
    31 Aug 2007
    Messages:
    84
    Likes Received:
    59
    Reputations:
    -3

    Абсолютно не понял, что ты этим хотел сказать?! В адресную ячейку (Buffer) в которую можно записать 1024 символа и записывается считанная строка. Таким образом в текстовом файле в одной строке содержится максимально 1024 символа и строки поочередно считываются. При этом нужно конечно бы освободать память при переходе на новую строчку. Иначе говоря считывание из текстового файла, в строчках которого достаточно большое кол-во символов может происходить следюущ. образом:

    Code:
    var
     f:TextFile;
    begin
    AssignFile(f,'txtfile');
     Reset(f);
    while not EOF(f) do
     begin
      new(buffer);
      readln(f,buffer^);
    
      ....
    
      dispose(buffer);
    
     end;
     CloseFile(f);
     
  14. Dober'man

    Dober'man Banned

    Joined:
    16 Jul 2007
    Messages:
    70
    Likes Received:
    94
    Reputations:
    -8
    A2GIL
    Блин...ты сам разберись!!!
    Code:
    type
      TStr = array[0..1024] of Char;
      LngStr = ^TStr;
    
    var
      Buffer: LngStr;
    При таком объявлении память будет выделена ТОЛЬКО ПОД УКАЗАТЕЛЬ (Buffer) (всего 1 байт).
    Какие там 1024 символа под строку?!?!?! (и даже не 1024, а 1025)
    Ты где такое видел??? =)
    В твое примере ты выделил память под 1025 символов!!!!
    К ним так buffer^ не обращаются!!! У тебя это и не откомпилируется...
    Там циклом все делается...

    Это динамически формируемые массивы...
     
    1 person likes this.
  15. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Нельзя ли прежде, чем задать такой вопрос посмотреть здесь: google.ru, также можно массивом....:(
     
  16. /Boom\

    /Boom\ Elder - Старейшина

    Joined:
    14 Feb 2008
    Messages:
    19
    Likes Received:
    2
    Reputations:
    0
    Вопрос такой! Я гружу в memo большие обьемы текста как сделать чтоб ProgressBar отоброжал процесс выполнения заливки?
    Думаю вопрос вы поняли.
     
  17. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    "Как сделать ну вот это, там еще такая штучка, ну вы поняли" ... откуда грузишь? каг грузишь? мы те экстрасенсы?
     
  18. 0verbreaK

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

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Легче статически сделать, выполнение загрузки путем увеличения с паузой.

    Code:
    procedure Tform1.Step;
    var
      i: Integer;
    begin
       ProgressBar1.StepIt;
       Sleep(12);
       ProgressBar1.StepBy(12);
       ProgressBar1.Max:=100;
    end;
    
    
    Загрузка текстового файла

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    begin
      if OpenDialog1.Execute then
      begin
        if FileExists(OpenDialog1.FileName) then
        begin
          Step;
          Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
          ProgressBar1.Position:=0;
        end;
      end;
     end;
    
     
  19. Snik

    Snik New Member

    Joined:
    26 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Имхо, тогда надо использовать на LoadFromFile, а буферизованное чтение из файла, скажем, блоками по 4к, макс прогрессбара установить в размер файла (в кб, скажем) и увеличивать при каждой n-ой итерации (на 4 в данном случае). И не забывать про processmessages после каждого обновления значения.
     
  20. gh-62

    gh-62 New Member

    Joined:
    23 Jun 2007
    Messages:
    4
    Likes Received:
    2
    Reputations:
    0
    С помощью idHttp и CookieManager я авторизуюсь на сайте N, затем запросом http.get("N.ru/нужная страница"); загружаю исходный код запрашиваемой HTML'ки. С этим все отлично.
    Вопрос: подскажите пожалуйста в каком направлении копать на пути парсинга загруженной HTML страницы, без TWebBrowser. В частности как получать данные из таблиц с id и class например
    HTML:
    <table id="mess">
    <tr id="qwerty">
    <td class="main">...</td>
    </tr>
    </table>
    
    То бишь, надо выдернуть данные (текст) из содержащих эти классы/айди тегов.

    Насколько я понял,нужный парсинг лежит в огороде DOM, а парсить путем Pos("") не особо хочется :)


    По DOM'у, в исходниках везде идет представление WebBrowser.Document как IHTMLDocument2, но можно и без WebBrowser.Document, для этого надо что-то перегонять в IHTMLDocument2, а вот что - без понятия :confused:
     
Thread Status:
Not open for further replies.