Автор: tavria2
Дата сообщения: 13.12.2007 16:10
bigbrain
Возможно я не все правильно понял, но из вышеуказанных данных я представляю себе следующую картину.
Есть несколько папок - для каждого пользователя своя. В каждой папке есть текстовые файлы с жестко определенными именами и нужно информацию из этих файлов разместить в CSV-файле в виде значений разделенных запятыми, для каждого пользователя - новая строка в CSV-файле. Если я прав, тогда делаем следующее:
Создаем CSV-таблицу со значениями по умолчанию, вместо значений куда нужно подставлять данные из текствого файла - указываем имя файла.
С помощью диалогового окна выбираем папку пользователя с текстовыми файлами и получаем таблицу всех текстовых файлов находящихся в выбранной папке.
В цикле проверяем, совпадает ли какое-либо значение CSV-таблицы cо значением таблицы текстовых файлов, если совпадает, то заменяем значение CSV-таблицы данными из файла.
Формируем строку из измененной CSV-таблицы, используя в качестве разделителя - запятую.
Добавляем в конец файла полученную строку.
Все пункты повторяем для каждого пользователя.
Код: -- структура CSV со значениями по умолчанию, если значения берутся из файла,
-- тогда в качестве значения нужно указать имя этого файла.
tCSV = {"file1.txt",0,"file2.txt","",0,0,1,"\"Joomla!, Mosets Tree, directory extension\"","","","","","","","","","","","","",""}
cFolderCSV = "C:\\CSV\\"; -- папка размещения полученного CSV-файла
cFileNameCSV = "MyFile.csv"; -- имя полученного CSV-файла
cPath = Dialog.FolderBrowse("Выберите папку пользователя:", ""); -- путь к папке пользователя с txt-файлами
cSringCSV = ""; -- строка CSV
if (cPath ~= "CANCEL") then -- если не была нажата кнопка "ОТМЕНА"
tFiles = File.Find(cPath, "*.txt", false, false, nil, nil); -- получаем таблицу файлов пользователя (*.txt)
if (tFiles) then -- есть файлы
for n, cFileName in tFiles do -- перебираем в цикле имена файлов пользователя
for nIdx, cValueCSV in tCSV do -- перебираем в цикле значения CSV таблицы
if (cPath.."\\"..cValueCSV == cFileName) then -- если значение параметра CSV совпадает с именем файла
cValue = TextFile.ReadToString(cFileName); -- читаем файл в строку
tCSV[nIdx] = cValue; -- подставляем значение из файла вместо имени файла
end
end
end
for nIdx, cValueCSV in tCSV do -- перебираем в цикле значения измененной CSV таблицы
cSringCSV = cSringCSV..cValueCSV..","; -- строка для записи в CSV-файл
end
if (not Folder.DoesExist(cFolderCSV)) then -- если папка размещения CSV-файла не существует
Folder.Create(cFolderCSV); -- создаем папку для размещения CSV-файла
end
if (not File.DoesExist(cFileNameCSV)) then -- если CSV-файл не существует
TextFile.WriteFromString(cFolderCSV..cFileNameCSV, cSringCSV, false); -- создаем CSV-файл и записываеи строку
else -- если CSV-файл существует
TextFile.WriteFromString(cFolderCSV..cFileNameCSV, "\r\n"..cSringCSV, true); -- добавляем строку в конец CSV-файла
end
end
end