![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Уважаемые спецы помогите решить проблемку.
Задача следующая: При анализе документа я создаю столько файлов сколько у меня филиалов. затем раскидываю данны по анализу. Может получиться так что некоторые созданые файлы окажуться пустые. Вопрос заключается в следующем. Каким образом мне их (пустые файлы) лучше ликвидировать, удалить? Проца обработки файлов Код:
AssignFile(F,Param.PatchIN+InFile);
Reset(F);
SetLength(Fn,Param.count);
for I := 0 to Param.count - 1 do
begin
AssignFile(Fn[i],Param.PatchIN+NewFileName(InFile,i));
Rewrite(Fn[i]);
end;
// обработка
...
// конец обработки
for I := 0 to Param.Count - 1 do
CloseFile(Fn[i]);
CloseFile(F);
DeleteFile(PChar(Param.PatchIN+InFile)); |
|
#2
|
|||
|
|||
|
например если входной файл 12345678.123 и 4 филиала то в итоге получается файлы:
123456781.123 123456782.123 123456783.123 123456784.123 но реально могут быть заполнены два файла или более. и два из них или меньше будут пустые. |
|
#3
|
|||
|
|||
|
Вариант 1. Раскидавать в памяти, а потом выгружать в файлы только там, где данные есть.
Вариант 2. Получать список файлов и читать их длинну. GetFileSize тебе поможет. Одна проблема - надо открывать файл через API-шную функцию, хотя можно его динну получить и из TSearchRec. |
|
#4
|
|||
|
|||
|
А если в памяти раскидывать то может лучше использовать TStringList?
|
|
#5
|
|||
|
|||
|
Цитата:
type FileInfo = record FileName: string; FileSize: integer; end; Затем объявить переменную: var Files: array of FileInfo, естественно размер массива укажешь с помошью SetLength(Files, N) и по ходу выполнения процедуры заполнить массив, а затем я думаю сам дагадаешься как избавиться от пустых файлов. |
|
#6
|
|||
|
|||
|
сп помогло. О такой реализации я даже не догадался. все оказалось гораздо проще...
|