tavria2

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору 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 |
| Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 17:10 13-12-2007 | Исправлено: tavria2, 20:03 13-12-2007 |
|