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>

Как это сделать,и с чего начать?


vgvolk   (2011-10-04 17:25:00) [21]

Да это и есть тот самый глюк


stas   (2011-10-04 17:20:00) [22]

RWolf ©   (04.10.11 16:46) [60]
У меня это происходит на формах с XP манифеестом, нажимаешь ALT и контролы исчезают, потом либо сразу появляются либо мышкой надо провести по форме.


vgvolk   (2011-10-04 17:18:00) [23]

Они скрываются.Если на них отправляется действие то они появляются.Это получилось на Висте.Сейчас попробовал на ХР ничего не пропадает.


RWolf   (2011-10-04 16:46:00) [24]

у меня тоже windows 7, но я такого не замечал.
как воспроизвести?


stas   (2011-10-04 14:31:00) [25]

vgvolk   (04.10.11 14:08) [57]
У тебя windows 7 ?
Это глюк, я тоже такое замечал.


Cobalt   (2011-10-04 14:24:00) [26]

Насчет слешей - используй всегда функцию IncludeTrailingPathDelimiter()

а насчет неактивных - это как - пропадают?
в дизайнере?
совсем? из из модуля тоже?
или скрываются?


vgvolk   (2011-10-04 14:08:00) [27]

Спасибо.Попробую.Кстати я заметил такой глюк при смене раскладки клавиатуры(Shift+Alt) на форме пропадают все неактивные элементы,наверное это горячая клавиша делфи.хотя в списке горячих клавиш я не увидел.Может это глюк моей программы.Никто не сталкивался с подобным.Как ликвидировать этот глюк?


SergP   (2011-10-04 13:12:00) [28]


> vgvolk   (04.10.11 12:51) [55]
>
> ГИГАНТСКОЕ Спасибо.Теперь работает.Я делал почти то же самое
> только не знал что после DateToStr(Date) нужно писать слэш
> в кавычках)


> ForceDirectories('C:\Форма1П\Выходные данные\'+DateToStr(Date));
> {Создает папку с именем равныи текущей дате}
> fullFileName := 'C:\Форма1П\Выходные данные\';{Создание
> относительного пути}


Только лучше вычисляй дату один раз. а то действительно может глюкануть в полночь, Если между созданием папки и созданием файла произойдет смена даты, то глюканет...

Хотябы типа так:
fullFileName:='C:\Форма1П\Выходные данные\'+DateToStr(date);
ForceDirectories(fulFileName);
fullFileName := fullFileName+'\';


vgvolk   (2011-10-04 12:51:00) [29]

ГИГАНТСКОЕ Спасибо.Теперь работает.Я делал почти то же самое только не знал что после DateToStr(Date) нужно писать слэш в кавычках)


Очень Злой   (2011-10-04 12:49:00) [30]


> в путь создаваем функцией ForceDirectories.Вот такие пироги.


эта функция создает папку а не путь... Кроме того, она еще возвращает некоторое значение, которое тоже не помешало бы проанализировать...
А путь - это набор символов, показывающий расположение файла/папки в файловой системе.


Dennis I. Komarov   (2011-10-04 12:41:00) [31]

ведь поди прога, (Судя по "Форма1П") для чьей-то работы нужна...


SergP   (2011-10-04 12:35:00) [32]

fullFileName := 'C:\Форма1П\Выходные данные\';{Создание относительного пути}

какой путь создаешь, туда программа и скидывает файлы.

Если нужно с датой, то

fullFileName := 'C:\Форма1П\Выходные данные\'+DateToStr(Date)+'\';

ЗЫ Только не работай с этой программой в полночь.


vgvolk   (2011-10-04 12:20:00) [33]

procedure TForm1.btn3Click(Sender: TObject);
var fil: TextFile;
begin
begin
ForceDirectories('C:\Форма1П\Выходные данные\'+DateToStr(Date));{Создает папку с именем равныи текущей дате}
fullFileName := 'C:\Форма1П\Выходные данные\';{Создание относительного пути}
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,'<?xml version="1.0" encoding="UTF-8"?><package subdivision="'+cbb1.text+'" name="" date="'+formatdatetime('yyyymmdd',Date())+'">');{Запись текста в файл }
CloseFile(fil);{Закрытие файла}

Этот код создает папку именем равныи текущей дате(C:\Форма1П\Выходные данные\04.10.11) и текстовый файл(C:\Форма1П\Выходные данные\файл.txt) а мне нужно чтобы он сделал так(C:\Форма1П\Выходные данные\04.10.11\файл.txt).Т.е. чтобы он скидывал текстовый файл скидывался в путь создаваем функцией ForceDirectories.Вот такие пироги.


stas   (2011-10-04 11:50:00) [34]

Cobalt ©   (04.10.11 09:56) [49]
+1
или напиши комментарии на каждой строчке


Cobalt   (2011-10-04 09:56:00) [35]

Рекомендую пройтись по коду, вслухпроговаривая, что именно делает твоя программа.
А то у тебя взгляд замылился.


RWolf   (2011-10-04 09:55:00) [36]

> ExtractFilePath  (fullFileName)+cbb1.Text+'.txt'

и чему равняется ExtractFilePath  (fullFileName)+cbb1.Text+'.txt' ?


vgvolk   (2011-10-04 09:45:00) [37]

Никто не видет проблемы в коде а то я уже запарился.Мне нужно чтобы он все эти операции делал в папке с текущей датой.


vgvolk   (2011-10-03 19:46:00) [38]

Так папку я создал
procedure TForm1.btn3Click(Sender: TObject);
var fil: TextFile;
   s:string;
begin
begin
ForceDirectories('C:\Форма1П\Выходные данные\'+DateToStr(Date));
fullFileName := 'C:\Форма1П\Выходные данные\';
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);
Этот код создает пустую папку с текущей датой в нужном месте НО
куда мне вписать DateToStr(Date) чтобы текстовый файл он создавал в той же папке.Вставляю сюда fullFileName := 'C:\Форма1П\Выходные данные\'+DateToStr(Date); Эффект нулевой.Что не так?


Плохиш   (2011-09-30 12:31:00) [39]

Изучение делфи на форуме за неделю для полных идиотов.


stas   (2011-09-30 11:52:00) [40]

http://www.google.com.ua/search?rlz=1C1_____enUA410UA410&aq=f&sourceid=chrome&ie=UTF-8&q=delphi+%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C+%D0%BF%D0%B0%D0%BF%D0%BA%D1%83


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

Наверх

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