|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.12.2008, 15:25 | #1 |
Форумчанин
Регистрация: 08.12.2008
Сообщений: 156
|
работа с текстовыми файлами
у меня есть файл типа TEXT (он может быть достаточно быльшим ~10-12 мб), и переменная str типа WIDESTRING
мне необходимо в прогрессбар передавать состояние прочитывания файла. для этого я использую функцию SIZEOF(file1), что и является максимумом прогрессбара, и для каждой Readln (file1, str) я тоже определяю SIZEOF(str) и плюсую к позиции прогрессбара но видимо размеры определяются по разному и прогрессбар заполняется криво. (я НЕ забываю обнулять позицию в начале ) зотелось бы узнать, есть ли в дельфях функция, которая возвращает количество строк в текстовом файле? или что можете посоветовать еще? заранее благодарю |
08.12.2008, 15:38 | #2 |
Форумчанин
Регистрация: 29.06.2008
Сообщений: 603
|
Код:
|
08.12.2008, 15:51 | #3 |
Форумчанин
Регистрация: 08.12.2008
Сообщений: 156
|
ну, в общем-то, да, не совпадают
а файл с таким же содержанием вообще, на несколько порядков больше но это проблемы не отменяет |
08.12.2008, 16:07 | #4 |
Форумчанин
Регистрация: 29.06.2008
Сообщений: 603
|
В моем предыдущем посте был ответ на твой вопрос. Но ты так и не удосужился задуматься над тем, что я тебе привел.
|
08.12.2008, 16:21 | #5 |
Форумчанин
Регистрация: 08.12.2008
Сообщений: 156
|
ну, давай поразмышляем вслух
sizeof(ws) возвращает 4, length(ws) - 9 если я создаю тхт файл в котором всего одна строка "123456789", sizeof(f) мне дает 460. когда я оттуда считываю строку ws, мне возвращаются все теже 4 и 9 а рекомендации в каком направлении мне стоит двигаться я не заметил.. я долго смотрел |
08.12.2008, 16:27 | #6 |
Форумчанин
Регистрация: 29.06.2008
Сообщений: 603
|
Можно еще и справку посмотреть по этим функциям
|
08.12.2008, 16:35 | #7 |
Форумчанин
Регистрация: 08.12.2008
Сообщений: 156
|
sizeof возвращает количество байт из памяти на эту переменную
но все равно, остается вопрос открытым: sizeof(file) не равен сумме sizeof каждой строки этого файла! |
08.12.2008, 17:06 | #8 |
Форумчанин
Регистрация: 29.06.2008
Сообщений: 603
|
строка - это указатель. SizeOf дает размер указателя, который равен 4
|
08.12.2008, 17:17 | #9 |
Форумчанин
Регистрация: 08.12.2008
Сообщений: 156
|
а что надо сделать, чтобы выковырнуть по указателю само поле в памяти??
|
08.12.2008, 18:02 | #10 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
Для текстовых файлов можно использовать TStrings, а конкретней TStringList;
Код:
Свойства : F.Add(string); F.SaveToFile('fileName.txt'); F.Clear; F.Insert(i,'вставляемый текст') F.Delete(i); Для не текстовых файлов хорошо применять F: FileStream; SizeOfFile:= F.Seek(0,soFromEnd); // курсор в конец файла и возвращает // общее кол-во байт в файле
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с текстовыми файлами (Delphi) | Omedus | Помощь студентам | 6 | 18.12.2012 00:31 |
Pascal работа с текстовыми файлами | Andrey89 | Помощь студентам | 3 | 25.12.2007 19:21 |
Работа с Текстовыми файлами | wwww | Общие вопросы Delphi | 5 | 29.10.2007 11:17 |
Работа с текстовыми файлами | DartMrakkk | Общие вопросы Delphi | 3 | 14.07.2007 16:52 |
Задача с текстовыми файлами | SpeedMaster | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 02.04.2007 15:43 |