![]() |
| ||
|
|
Новости |
Поиск |
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>
Как это сделать,и с чего начать?
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