ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1831  
Старый 26.06.2008, 16:49
Аватар для A2GIL
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме:
422909

Репутация: 200
Отправить сообщение для A2GIL с помощью ICQ
По умолчанию

Цитата:
Сообщение от vspv  
как работать на delphi (lazarus'e) с текстовыми файлами со строками более 255 символов длиной?
неужели только посимвольно читать и бить на приемлимые строки?

вопрос решен использованием ansistring

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

Код:

type
  TStr = array[0..1024] of Char;
  LngStr = ^TStr;

var
  Buffer: LngStr;
  ...

  New(Buffer);


  ReadLn(F, Buffer^);


Цитата:
Сообщение от diznt  
Народ как реализовать так чтобы прога не слишком много жрала памяти (ну то есть по минимуму)

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

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

type
myInt = Int64;

...

var
i:myInt;
...

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

вообщем все в таком духе..

Последний раз редактировалось A2GIL; 26.06.2008 в 16:58..
 
Ответить с цитированием

  #1832  
Старый 26.06.2008, 18:21
Аватар для Dober'man
Dober'man
Banned
Регистрация: 16.07.2007
Сообщений: 79
Провел на форуме:
801879

Репутация: 337
Отправить сообщение для Dober'man с помощью ICQ
По умолчанию

Цитата:
Сообщение от A2GIL  
Самое большое количество символов, которое можно использовать в Delphi. Нужно создать тип.
Код:
type
  TStr = array[0..1024] of Char;
  LngStr = ^TStr;

var
  Buffer: LngStr;
  ...

  New(Buffer);

  ReadLn(F, Buffer^);
Насколько я понял F у тебя типа text, то как же тогда команда ReadLn, которая считывает из файла строки, укажет строку - адресом одного символа?!?!?!

Цитата:
Сообщение от diznt
Народ как реализовать так чтобы прога не слишком много жрала памяти (ну то есть по минимуму)
Я писал в типсах про множества...
 
Ответить с цитированием

  #1833  
Старый 26.06.2008, 21:48
Аватар для A2GIL
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме:
422909

Репутация: 200
Отправить сообщение для A2GIL с помощью ICQ
По умолчанию

Цитата:
Сообщение от Dober'man  
Насколько я понял F у тебя типа text, то как же тогда команда ReadLn, которая считывает из файла строки, укажет строку - адресом одного символа?!?!?!

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

Код:
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);
 
Ответить с цитированием

  #1834  
Старый 27.06.2008, 01:16
Аватар для Dober'man
Dober'man
Banned
Регистрация: 16.07.2007
Сообщений: 79
Провел на форуме:
801879

Репутация: 337
Отправить сообщение для Dober'man с помощью ICQ
По умолчанию

A2GIL
Блин...ты сам разберись!!!
Код:
type
  TStr = array[0..1024] of Char;
  LngStr = ^TStr;

var
  Buffer: LngStr;
При таком объявлении память будет выделена ТОЛЬКО ПОД УКАЗАТЕЛЬ (Buffer) (всего 1 байт).
Цитата:
В адресную ячейку (Buffer) в которую можно записать 1024 символа и записывается считанная строка.
Какие там 1024 символа под строку?!?!?! (и даже не 1024, а 1025)
Ты где такое видел??? =)
В твое примере ты выделил память под 1025 символов!!!!
К ним так buffer^ не обращаются!!! У тебя это и не откомпилируется...
Там циклом все делается...
Цитата:
for i:=0 to 1024 do
begin
read(f, buffer^[i])
end;
Это динамически формируемые массивы...
 
Ответить с цитированием

  #1835  
Старый 27.06.2008, 01:55
Аватар для De-visible
De-visible
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме:
4037638

Репутация: 1821


Отправить сообщение для De-visible с помощью ICQ
По умолчанию

Цитата:
Сообщение от vspv  
как работать на delphi (lazarus'e) с текстовыми файлами со строками более 255 символов длиной?
неужели только посимвольно читать и бить на приемлимые строки?

вопрос решен использованием ansistring
Нельзя ли прежде, чем задать такой вопрос посмотреть здесь: google.ru, также можно массивом....
 
Ответить с цитированием

  #1836  
Старый 27.06.2008, 15:04
Аватар для /Boom\
/Boom\
Познающий
Регистрация: 14.02.2008
Сообщений: 62
Провел на форуме:
335706

Репутация: 4
По умолчанию

Вопрос такой! Я гружу в memo большие обьемы текста как сделать чтоб ProgressBar отоброжал процесс выполнения заливки?
Думаю вопрос вы поняли.
 
Ответить с цитированием

  #1837  
Старый 27.06.2008, 15:40
Аватар для BlackSun
BlackSun
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме:
10046345

Репутация: 4589


По умолчанию

Цитата:
Сообщение от /Boom\  
Вопрос такой! Я гружу в memo большие обьемы текста как сделать чтоб ProgressBar отоброжал процесс выполнения заливки?
Думаю вопрос вы поняли.
"Как сделать ну вот это, там еще такая штучка, ну вы поняли" ... откуда грузишь? каг грузишь? мы те экстрасенсы?
 
Ответить с цитированием

  #1838  
Старый 27.06.2008, 15:47
Аватар для 0verbreaK
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

Легче статически сделать, выполнение загрузки путем увеличения с паузой.

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

Код:
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;
 
Ответить с цитированием

  #1839  
Старый 28.06.2008, 14:57
Аватар для Snik
Snik
Новичок
Регистрация: 26.06.2008
Сообщений: 15
Провел на форуме:
27936

Репутация: 13
По умолчанию

Цитата:
Сообщение от /Boom\  
Вопрос такой! Я гружу в memo большие обьемы текста как сделать чтоб ProgressBar отоброжал процесс выполнения заливки?
Думаю вопрос вы поняли.
Имхо, тогда надо использовать на LoadFromFile, а буферизованное чтение из файла, скажем, блоками по 4к, макс прогрессбара установить в размер файла (в кб, скажем) и увеличивать при каждой n-ой итерации (на 4 в данном случае). И не забывать про processmessages после каждого обновления значения.
 
Ответить с цитированием

  #1840  
Старый 28.06.2008, 17:44
Аватар для gh-62
gh-62
Новичок
Регистрация: 23.06.2007
Сообщений: 6
Провел на форуме:
56051

Репутация: 2
Отправить сообщение для gh-62 с помощью ICQ
По умолчанию

С помощью 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, а вот что - без понятия
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/WPAN/WLAN 2564 06.04.2026 23:31
[ *NIX ] Задай вопрос - получи ответ. Xszz *nix 1547 15.06.2010 15:41
[jQuery] - Задай вопрос, получи ответ Isis PHP, PERL, MySQL, JavaScript 62 25.12.2009 03:25
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ