Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#1: 2010-06-09 18:14:38 ЛС | профиль | цитата
Приятного времени суток господа!

Как можно организовать прямой доступ к файлу и перебор всех его строк?
сейчас у меня реализовано это так (схема просто как пример)
code_18770.txt
Есть ли возможность избавиться от компонента помеченого красным?
т.е. что бы не загружать весь файл, а обращаться к нему на прямую
Заранее спасибо
карма: 1

0
файлы: 1code_18770.txt [538B] [233]
Ответов: 4641
Рейтинг: 334
#2: 2010-06-09 18:18:40 ЛС | профиль | цитата
code_18771.txt
карма: 1
Время верстки: %cr_time% Текущее время: %time%
1
файлы: 1code_18771.txt [292B] [234]
Голосовали:-= DriveR =-
Ответов: 817
Рейтинг: 52
#3: 2010-06-09 18:21:33 ЛС | профиль | цитата
Ravilr, Все гениальное просто, а я с файловыми потоками мутил
Спасибо
карма: 1

0
Ответов: 758
Рейтинг: 112
#4: 2010-06-14 18:49:12 ЛС | профиль | цитата
Попробовал сделать с помощью InlineCode, но почему-то не работает
Подскажите где ошибка

Add(InlineCode,12930845,287,161)
{
WorkPoints=#50:doOpen=Открывает текстовый файл для перебора строк|40:doStop=Останавливает перебор строк файла|
EventPoints=#55:onOpen=Выдает в поток очередную строку текстового файла|20:onEnd=Конец перебора|
VarPoints=#38:String=содержит очередную строку файла|
DataPoints=#39:FileName=Полный путь к текстовому файлу|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|32:uses Windows, kol, Share, Debug;|0:|4:type|28: THiOpenFile = class(TDebug)|9: private|16: str: string;|19: FStop: boolean;|8: public|27: _prop_FileName: string;|19: _data_FileName,|29: _event_onOpen: THI_Event;|32: _event_onEnd: THI_Event; |0:|56: procedure _work_doOpen(var _Data:TData; index:word);|56: procedure _work_doStop(var _Data:TData; index:word);|55: procedure _var_String(var _Data:TData; index:word);|5: end;|0:|14:implementation|35:procedure THiOpenFile._work_doOpen;|3:var|14: F: TextFile;|13: fn: string;|34: BufIn : Array[0..65535] of Char;|5:begin|58: fn := ReadString(_Data, _data_FileName, _prop_FileName);|34: if not FileExists(fn) then exit;|20: AssignFile(F, fn);|11: Reset(F);|23: SetTextBuf(F, BufIn);|17: FStop := False;|35: while not eof(F) and not FStop do|7: begin|19: Readln(F, str);|36: _hi_onEvent(_event_onOpen, str);|6: end;|15: CloseFile(F);|34: _hi_onEvent(_event_onEnd, '); |4:end;|0:|35:procedure THiOpenFile._work_doStop;|5:begin|16: FStop := true;|4:end;|0:|34:procedure THiOpenFile._var_String;|5:begin|23: dtString(_Data, str);|4:end;|0:|4:end.|
}
карма: 1

0
Ответов: 5446
Рейтинг: 323
#5: 2010-06-14 18:56:12 ЛС | профиль | цитата
А чем это лучше связки StrList + ArrayEnum?
карма: 1

0
Ответов: 758
Рейтинг: 112
#6: 2010-06-14 19:02:50 ЛС | профиль | цитата
iarspider писал(а):
А чем это лучше связки StrList + ArrayEnum?

Может и ничем
Просто решил разобраться как работать с InlineCode
Решил поставить простую задачу и решить ее
Но ни как ни могу понять в чем загвостка
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#7: 2010-06-14 19:27:47 ЛС | профиль | цитата
miver, а так ?
code_18861.txt
------------ Дoбавленo в 19.27:
iarspider писал(а):
А чем это лучше связки StrList + ArrayEnum?
Это "совсем другой коленкор"
Это можно читать прямо с диска по одной строке, не загружая в память (StrList) весь (иногда огромный) текстовый файл, и обрабатывать только одну строку.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1code_18861.txt [1.5KB] [190]
Голосовали:miver
Разработчик
Ответов: 26156
Рейтинг: 2127
#8: 2010-06-14 19:33:27 ЛС | профиль | цитата
А чем не устраивает штатный компонент SearchInFile
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#9: 2010-06-14 19:34:56 ЛС | профиль | цитата
nesco,
miver писал(а):
Просто решил разобраться как работать с InlineCode

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26156
Рейтинг: 2127
#10: 2010-06-14 19:36:54 ЛС | профиль | цитата
Ага, и за основу взял код, именно этого, компонента

карма: 22

0
Ответов: 16884
Рейтинг: 1239
#11: 2010-06-14 19:39:51 ЛС | профиль | цитата
Ну да.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 758
Рейтинг: 112
#12: 2010-06-15 00:09:53 ЛС | профиль | цитата
nesco писал(а):
А чем не устраивает штатный компонент SearchInFile

С помощью SearchInFile нельзя вывести пустую строку, вот я и решил - пора разбираться с начинкой компонентов
Вот только не все сразу понятно. На порядок сложнее понять, чем в HiAsm рисовать

карма: 1

0
Ответов: 16884
Рейтинг: 1239
#13: 2010-06-15 01:22:09 ЛС | профиль | цитата
miver, ну
miver писал(а):
в чем загвостка
понял ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 758
Рейтинг: 112
#14: 2010-06-15 11:40:51 ЛС | профиль | цитата
Tad писал(а):
понял ?

Насколько я понял то так
1. Всегда нужно ставить THiAsmClass = class(TDebug)
2. К названиям точек не добавляем _prop_, _data_, _event_, _work_, _var_
правильно


Не понял только почему
1. не указан тип переменной
public
FileName,


2. третий аргумент = '
fn := ReadString(_Data, FileName,');

карма: 1

0
Ответов: 16884
Рейтинг: 1239
#15: 2010-06-15 12:10:23 ЛС | профиль | цитата
Всё верно понял.
miver писал(а):
Не понял только почему
1. При указании типа переменных разрешается имена однотипных переменных перечислять через запятую.
Например:

#pas
//так
a, d, r : integer;
//или так
a,
d,
r : integer;
2. А у нас нет третьего аргумента _prop_FileName - поэтому и стоит ".
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:miver
Сообщение
...
Прикрепленные файлы
(файлы не залиты)