![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание xml файла в делфи [D7]
vgvolk © (2011-09-28 08:49:00)Приветсвую мастера.Мне нужно создать шапку xml файла(по щелчку по кнопке) такого типа
<?xml version="1.0" encoding="UTF-8" ?>
- <package subdivision="420-056" name="" date="20110906">
</package>
где значения package subdivision он берет из раскрывающегося списка на форме.Name из эдита.А date ставит текущую.
После этого мановением руки по другой кнопке он добавляет строку
<pasport page="1" seria="3206" number="124954" foto="3206124954.jpg" form="3206124954.tif" />
Pasport page изменяется значение 1,3,5,7,9.
seria берет из эдита.
number тоже из эдита.
foto seria + number+.jpg.
form seria + number+.tif.
И сохраняет файл под именем 420-056_20110906.1p
Вот вид уже готового файла
<?xml version="1.0" encoding="UTF-8" ?>
- <package subdivision="420-056" name="" date="20110906">
<pasport page="1" seria="3206" number="124954" foto="3206124954.jpg" form="3206124954.tif" />
<pasport page="3" seria="3209" number="756278" foto="3209756278.jpg" form="3209756278.tif" />
<pasport page="5" seria="3208" number="635975" foto="3208635975.jpg" form="3208635975.tif" />
<pasport page="7" seria="3205" number="996229" foto="3205996229.jpg" form="3205996229.tif" />
<pasport page="9" seria="3202" number="941355" foto="3202941355.jpg" form="3202941355.tif" />
<pasport page="11" seria="3207" number="402678" foto="3207402678.jpg" form="3207402678.tif" />
<pasport page="13" seria="3201" number="306669" foto="3201306669.jpg" form="3201306669.tif" />
<pasport page="15" seria="3204" number="722477" foto="3204722477.jpg" form="3204722477.tif" />
<pasport page="17" seria="3209" number="794054" foto="3209794054.jpg" form="3209794054.tif" />
<pasport page="19" seria="3204" number="554152" foto="3204554152.jpg" form="3204554152.tif" />
</package>
Как это сделать,и с чего начать?
Dennis I. Komarov (2011-10-05 17:58:00) [1]
> Это только маленькая часть программы.Самые сложные моменты.
Я плакалЪ... Простые моменты - это наверное "залезть" в 0-ring? :)
vgvolk1 (2011-10-05 17:09:00) [2]Я не понял почему когда пишу vgvolk,vgvolk2 пишет что уже такой пользователь есть.Это своеобразный бан за лимит вопросов?
vgvolk1 (2011-10-05 17:06:00) [3]Если б я спрашивал о каждом косяке программы то форума бы не хватило:).Это только маленькая часть программы.Самые сложные моменты.
stas (2011-10-05 14:00:00) [4]vgvolk (05.10.11 13:38) [71]
Мы уже всем форумом тебе программу пишем, с тебя коньяк.
...Каждому)
SergP (2011-10-05 13:54:00) [5]Это:
ForceDirectories('C:\Форма1П\Выходные данные\'+DateToStr(Date));{Создает папку с именем равныи текущей дате}
fullFileName := 'C:\Форма1П\Выходные данные\'+DateToStr(Date)+'\';
замени на это:
filepath:='C:\Форма1П\Выходные данные\'+DateToStr(Date);
addname:='';
i:=1;
while not ForceDirectories(filepath+addname) do
begin
addname:='('+inttostr(i)+')';
inc(i);
end;
fullFileName:=filepath+addname+'\';
Вроде так, хз... Может заработает...
Только в var добавь:
addname:string;
i:integer;
Медвежонок Пятачок (2011-10-05 13:48:00) [6]полный путь, а не полные пути.
мужской род, единственное число.
Плохиш (2011-10-05 13:47:00) [7]Книжку прочитать пора всё-таки...
vgvolk2 (2011-10-05 13:43:00) [8]Так как написать её имя мне же нужно прописать полный путь.
Блин уже кто-то под моим логином зарегистрировался
Dennis I. Komarov (2011-10-05 13:42:00) [9]
> Что конкретно не правильно?
Мозг...
Медвежонок Пятачок (2011-10-05 13:41:00) [10]все что после inc
Dennis I. Komarov (2011-10-05 13:41:00) [11]
> Медвежонок Пятачок © (05.10.11 13:15) [66]
>
> чтобы если такая папка существует то он создавал новую папку
> с текущей датой долько добавил к имени(1).К следующей (2)
>
> сам спросил, сам ответил.
>
> while directoryexists(dir_name) do
> inc(i);
> dir_name := dir_name + inttostr(i);
> ....
В твоем коде Inc() не обязателен :)
Плохиш (2011-10-05 13:41:00) [12]
> 'C:\Форма1П\Выходные данные\'+DateToStr(Date) := 'C:\Форма1П\Выходные
> данные\'+DateToStr(Date) + inttostr(i)
>
Надо распечатать и на стену повесить
Медвежонок Пятачок (2011-10-05 13:38:00) [13]он тебе правду пишет.
ты ему верь.
vgvolk (2011-10-05 13:38:00) [14]Что конкретно не правильно?
vgvolk (2011-10-05 13:35:00) [15]
while directoryexists('C:\Форма1П\Выходные данные\'+DateToStr(Date)) do
inc(i);
'C:\Форма1П\Выходные данные\'+DateToStr(Date) := 'C:\Форма1П\Выходные данные\'+DateToStr(Date) + inttostr(i)
Пишет левая сторона не может назначить к
Медвежонок Пятачок (2011-10-05 13:32:00) [16]Пишет ошибку.
Раз пишет, то это неспроста.
Это надо читать.
vgvolk (2011-10-05 13:30:00) [17]А заместь dir_name мне написать 'C:\Форма1П\Выходные данные\'+DateToStr(Date)?Пишет ошибку.А инструмент мне без разницы какой просто я думаю тут цикл нужен.
Медвежонок Пятачок (2011-10-05 13:15:00) [18]чтобы если такая папка существует то он создавал новую папку с текущей датой долько добавил к имени(1).К следующей (2)
сам спросил, сам ответил.
while directoryexists(dir_name) do
inc(i);
dir_name := dir_name + inttostr(i);
....
RWolf (2011-10-05 13:12:00) [19]инструмент выбирается, исходя из решаемой задачи, а не наоборот.
с чем связан выбор именно цикла как инструмента?
vgvolk (2011-10-05 12:48:00) [20]
procedure TForm1.btn3Click(Sender: TObject);
var fil: TextFile;
begin
begin
ForceDirectories('C:\Форма1П\Выходные данные\'+DateToStr(Date));{Создает папку с именем равныи текущей дате}
fullFileName := 'C:\Форма1П\Выходные данные\'+DateToStr(Date)+'\';
AssignFile(fil,ExtractFilePath (fullFileName)+cbb1.Text+'.txt');{ExtractFilePath (fullFileName)это путь выше,cbb1.Text это код берется из комбобокса}
if FileExists(ExtractFilePath (fullFileName)+cbb1.Text+'.txt') then
Append(fil) else rewrite(fil);{Если файл существует тогда добавить данные если нет тогда создать новый файл}
Writeln(fil,UTF8Encode('<?xml version="1.0" encoding="UTF-8"?><package subdivision="'+cbb1.text+'" name="" date="'+formatdatetime('yyyymmdd',Date())+'">'));{Запись текста в файл }
CloseFile(fil);{Закрытие файла}
Код создает папку с текущей датой вставляет туда файлы.Но если я заново зайду в тот же день новый текстовый файл создается в той же папке.Куда мне вставить цикл чтобы если такая папка существует то он создавал новую папку с текущей датой долько добавил к имени(1).К следующей (2) и т.д.Типа C:\Папка\папка с текущей датой(1) потом C:\Папка\папка с текущей датой(1)?