|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Сохранение array of string в файл
Здравствуйте.
Подскажите как записать/прочитать в/из файл(а) (WriteFile/ReadFile) array oF string. C целыми числами нет проблем. С числами с плавающей точкой пишется весь хвост после запятой, но это ладно. Читается нормально. с числами: Код:
var MasivM : array of integer; WriteFile(F, masivm[0], SizeOf(Integer)* Length(MasivM), dwWrite, nil) А как быть с array of String? Длина строки в массиве может быть разной и 5 и 10 и 1 символ. Ка правильно сделать? Подскажите пожалуйста. Спасибо. |
#2
|
|||
|
|||
Если в файл надо писать в файл только один массив, то просто пиши его в цикле через writeln(). Читать - через readln() пока файл не кончился.
|
#3
|
||||
|
||||
Цитата:
А по другому никак? А если так? Код:
var SizeMas : integer = 0; str : string; for I := Low(MasivM) to High(MasivM) do begin SetFilePointerEx(blabla, SizeMas, nil, FILE_END); str := MasivM[i]; SizeMas := SizeOf(char)* Length(MasivM[i]); WriteFile(blabla, str[1], SizeMas, dwWrite, nil); end; Последний раз редактировалось Stalker2-42, 10.12.2016 в 22:11. |
#4
|
||||
|
||||
Можно ещё средствами класса TStringList, в цикле строки в него загрузить, сохранить, а затем так же считать через for
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
||||
|
||||
Забыл упомянуть, я не использую Classes, SysUtils.
|
#6
|
||||
|
||||
Ваш код работает, у меня правда в D7 конец файла определяется функцией SetFilePointer без Ex, другой нету, и текстовый файл я создал "ручками" заранее, массив в него записывается норм.
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#8
|
||||
|
||||
Всем спасибо.
Запись в файл массив работает на ура. А вот как читать из файла построчно с помощью ReadFile я не пойму. Пример файла: PHP код:
|
#9
|
||||
|
||||
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
#10
|
||||
|
||||
как-то так... примерно.
Очистить временный буфер. Прочитать в цикле очередной байт. Если #10 или #13 - выход из цикла и взять результат во временном буфере, иначе добавить этот символ во временный буфер. Именно так работает _ReadLn().
Пишу программы за еду. __________________ |
#11
|
||||
|
||||
Писа́ть ДКА, с несколькими состояниями:
1. Начало строки. 2. Конец строки. 3. Конец файла. Вариант 2 (если надосест/не получится мучаться с ДКА): Перестать жевать голову задрачиванием WinAPI и использовать модули Classes, SysUtils, в которых есть StringStream и Split. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#12
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Stalker2-42 (13.12.2016)
|
#13
|
||||
|
||||
Цитата:
На днях займусь. Сейчас некогда. |