![]() |
| ||
|
|
Новости |
Поиск |
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-09-30 11:18:00) [41]
> Нужно прииллюстрировать это на прмере
Кому?
Медвежонок Пятачок (2011-09-30 11:03:00) [42]ты вообще в курсе, что делфи надо запрограммировать, чтобы "он" кидал что-то куда-то и создавал папки где-то?
ты папку создавал?
vgvolk (2011-09-30 10:46:00) [43]Нужно прииллюстрировать это на прмере.Он это делфи
Медвежонок Пятачок (2011-09-30 10:40:00) [44]сначала вежливо, а если не поймет, скажи, что позовешь местных и они ему наваляют.
кстати, открой секрет, кто такой "он"?
vgvolk (2011-09-30 10:38:00) [45]Каким образом?
Медвежонок Пятачок (2011-09-30 10:26:00) [46]Мне нужно чтобы он кидал файлы не в C:\Folder\
Ты ему-то и скажи, чтобы он кидал куда надо.
Dennis I. Komarov (2011-09-30 10:06:00) [47]
> Папку не создает
И не должен...
vgvolk (2011-09-30 10:03:00) [48]
var fil: TextFile;
s:string;
begin
begin
fullFileName:='C:\Folder\'+ DateToStr(Date){Добавляем дату}
AssignFile(fil,ExtractFilePath(fullFileName)+cbb1.Text+'.txt');
if FileExists(ExtractFilePath(fullFileName)+cbb1.Text+'.txt') then
Append(fil) else rewrite(fil);
Writeln(fil,'<?xml version="1.0" encoding="UTF-8"?><package subdivision="'+cbb1.text+'" name="" date="'+formatdatetime('yyyymmdd',Date())+'">');
CloseFile(fil);
end;
Добавляю дату но это ничего не меняет я ее в разные места вставлял
fullFileName:='C:\Folder\+ DateToStr(Date)'{Добавляем дату}
fullFileName:='C:\Folder\DateToStr(Date)'{Добавляем дату}
Папку не создает
Dennis I. Komarov (2011-09-30 09:19:00) [49]
> Мне нужно чтобы он кидал файлы не в C:\Folder\ а в C:\Folder\текущая
> дата
Еще одно гениальное решение... Нету у юзверей прав писать на C: (C:\Folder) и это правильно. И нефига писать проги, подразумевая что все ходят с админ-правами...
> Т.е. создавать папку с именем текущей даты.Не знаю как вставить
> formatdatetime('yyyymmdd',Date()) в путь папки.Это вообще
> реально?
>
Разумеется реально, DateToStr + F1
vgvolk (2011-09-30 08:31:00) [50]У меня еще проблемка
var fil: TextFile;
s:string;
begin
begin
fullFileName:='C:\Folder\'
AssignFile(fil,ExtractFilePath(fullFileName)+cbb1.Text+'.txt');{cbb1-это комбобокс где пользователь выбирает код подразделения}
if FileExists(ExtractFilePath(fullFileName)+cbb1.Text+'.txt') then
Append(fil) else rewrite(fil);
Writeln(fil,'<?xml version="1.0" encoding="UTF-8"?><package subdivision="'+cbb1.text+'" name="" date="'+formatdatetime('yyyymmdd',Date())+'">');
CloseFile(fil);
end;
Мне нужно чтобы он кидал файлы не в C:\Folder\ а в C:\Folder\текущая дата
Т.е. создавать папку с именем текущей даты.Не знаю как вставить formatdatetime('yyyymmdd',Date()) в путь папки.Это вообще реально?
vgvolk (2011-09-30 07:59:00) [51]Спасибо большое,все работает теперь.
Dennis I. Komarov (2011-09-29 23:16:00) [52]
> stas ©
Ох, плохому ведь научишь...
stas (2011-09-29 21:58:00) [53]Только не забудь его сбрасывать в 0
stas (2011-09-29 21:57:00) [54]vgvolk (29.09.11 20:55) [28]
Так веди счетчик нажатий и подставляй его вместо page="1"
например
TForm1 = Class (Tform)
private
FClicks:Integer;
....
//на нажатие кнопки
FClicks:=FClicks+1;
//При формировании
Write(fil,'<pasport page="'+IntToStr(FClicks)+'" seria="'+edt1.text+'" number="'+edt2.text+'" foto="'+edt1.text+edt2.text+'.jpg" form="'+edt1.Text+edt2.Text+'.tif"/>');
Медвежонок Пятачок (2011-09-29 21:06:00) [55]устаешь наверное под вечер-то.
vgvolk (2011-09-29 20:55:00) [56]А мне как раз нужно чтобы строчки добавлялись не все разом.Я ввожу в эдитах серию,номер и нажимаю кнопку в которой прописан второй блок он добавляет нужную мне строчку.Потом я автоматом очищаю эдиты опять ввожу данные и добавляю еще строку.Когда я добавил все что хотел я закрываю файл третьим блоком.Первые два блока у меня записаны на отдельных кнопках а третий блок записан в событии Onclick компонета CheckBox.
stas (2011-09-29 20:25:00) [57]vgvolk (29.09.11 18:47) [20]
2-й блок добавляет только 1 строчку в xml, а как появляются такие же остальные?
Dennis I. Komarov (2011-09-29 19:59:00) [58]
> ибо без слез его читать невозможно.
Зато рабочий :)
Servy (2011-09-29 19:50:00) [59]Я бы ваш код переписал изначально, ибо без слез его читать невозможно.
В целом же, преобразовать строку в UTF8 просто - нужно воспользоваться функцией UTF8Encode.
vgvolk (2011-09-29 19:38:00) [60]Спасибо,сейчас или завтра утром попробую использовать эту библиотеку.И кстати вопрос что мне изменить в коде чтобы он строку преобразовал в utf-8?