Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание xml файла в делфи [D7]


Страницы:   1 2 3 4 5

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?


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо