Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как использовать потоки для быстрого чтения текстового файла?


Страницы:   1 2

TInteger ©   (2013-09-17 12:16:00) 

Привет мастера! Подскажите плиз как быстро прочитать текстовый файл построчно в StringGrid(одна колонка)? Нагуглил что использование потоков ускорит дело, но понятного мне примера не нашел :( И еще не пониманию что лучше применить TFileStream или TSringStream?


[ВладОшин]   (2013-09-17 16:56:00) [1]

да это так, уточняю.. По идее не важно.
А так - в разделе Public формы, например, я бы объявил

А весь код модуля можно глянуть?
Что-то странное творится :)


TInteger   (2013-09-17 16:28:00) [2]

Форма одна, в процедуре если не писать Form1 тогда не узнает компоненты на форме :( Процедура LoadingGrid нигде не объявлена, сама по себе :) А где надо объявить?


[ВладОшин]   (2013-09-17 16:18:00) [3]

а почему постоянно упоминается
Form1.
?

procedure LoadingGrid(s:String); она где объявлена?


TInteger   (2013-09-17 15:42:00) [4]

>[ВладОшин]  Похоже Андроидский грид отличается :( иначе чего бы компилятору возмущатся?


TInteger   (2013-09-17 15:41:00) [5]

>Anatoly Podgoretsky А как присвоить прочитанное значение и увеличить пор.номер след присваиваемой строки? inc?


Anatoly Podgoretsky   (2013-09-17 15:40:00) [6]

Пионерское уже не в почете, нужно документально подтвердить и желательно при разных запусках.


[ВладОшин]   (2013-09-17 15:39:00) [7]

А тут написано, что есть св-во
http://docwiki.embarcadero.com/Libraries/XE5/en/Vcl.Grids.TStringGrid.Cols


Anatoly Podgoretsky   (2013-09-17 15:34:00) [8]

Это далеко не чтение файла, убери Form1.StringGrid1.Cells[0,n]:=q;и n:=n+1;


TInteger   (2013-09-17 15:10:00) [9]

Файл 321кб, fileList.Count =2070


TInteger   (2013-09-17 15:09:00) [10]

Вот так читает, но долго:
procedure LoadingGrid(s:String);
var
f: TextFile;
n:Integer;
q:String;
begin
AssignFile(f,s);
Reset(f); n:=0;
Form1.StringGrid1.BeginUpdate;
 while not EOF(f) do
 begin
   readln(f, q);
   Form1.StringGrid1.Cells[0,n]:=q;
   n:=n+1;
 end;
 CloseFile(f);
 Form1.StringGrid1.EndUpdate;
end;


[ВладОшин]   (2013-09-17 15:08:00) [11]

а подшовь-ка мессагу на предмет  fileList.Count = ?


[ВладОшин]   (2013-09-17 15:06:00) [12]


> А чем докажешь, что в текущем месте есть этот файл?

кстати, да

try
  if not(FileExists(s)) then
  begin
    ShowMessage('!!');
    Exit;
  end;
  fileList.LoadFromFile(s);

хотя LoadFromFile( из несуществующего, должен дать Exception


TInteger   (2013-09-17 15:05:00) [13]

>Anatoly Podgoretsky Чесное пионерское! :)
>[ВладОшин] Вручную пишу данные,тогда отображает: StringGrid1.Cells[0,0]:='1';


[ВладОшин]   (2013-09-17 15:01:00) [14]

а вообще, что -то видно, в любых других ячейках, если писать хоть что-нибудь?
for i:= 0 to 9 do Form1.StringGrid1.Cells[random(10),random(10)]:= 'qwert';


Anatoly Podgoretsky   (2013-09-17 14:58:00) [15]

> TInteger  (17.09.2013 14:34:09)  [9]

А чем докажешь, что в текущем месте есть этот файл?


TInteger   (2013-09-17 14:57:00) [16]

Похоже нет, раз компилятор ругается :(


TInteger   (2013-09-17 14:53:00) [17]

9999 17 0 0


Ega23   (2013-09-17 14:52:00) [18]

Для начала я бы порекомендовал не забывать про BeginUpdate - EndUpdate
Порой на порядок-два ускорение даёт.


[ВладОшин]   (2013-09-17 14:48:00) [19]


> ХЕ5,андроид

И что, там нет ?

 TStringGrid = class(TDrawGrid)

 public

   property Cols[Index: Integer]: TStrings read GetCols write SetCols;

мда..


[ВладОшин]   (2013-09-17 14:45:00) [20]

S :=  format('%d %d %d %d',[ StringGrid1.RowCount, StringGrid1.ColCount,    StringGrid1.FixedCols, StringGrid1.FixedRows]);

перед
 >> for i:= 0 to fileList.Count-1 do Form1.StringGrid1.Cells[0,i]:= fileList[i];

чему равно S?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо