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-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)?


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

Наверх

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