|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Работа со строками txt файла. |
|
|
Разное - [решено] Работа со строками txt файла.
|
Новый участник Сообщения: 14 |
В общем ситуация такая:
Есть файл со строками типа И нужен скрипт, который бы создавал файлы с такими записями (если из примера): 1 файл: BEGIN:VCARD VERSION:2.1 N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:1Имя 1Фамилия TEL;WORK:8946546464 END:VCARD BEGIN:VCARD VERSION:2.1 N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:2Имя 2Фамилия TEL;WORK:894646546 END:VCARD BEGIN:VCARD VERSION:2.1 N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:3Имя 3Фамилия TEL;WORK:8978975999 END:VCARD Заранее громадное спасибо ![]() |
|
Отправлено: 06:37, 18-06-2012 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Заготовка написана на коленке, С++
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString fName, lName, nTelefon, NameFile; TSysCharSet chSpace; chSpace<<' '; TStringList *TokenSpace = new TStringList(); Memo2->Clear(); for(int i = 0; i < Memo1->Lines->Count; i++){ ExtractStrings(chSpace, chSpace, Memo1->Lines->Strings[i].c_str(), TokenSpace); // Здесь можно поставить проверку на то что // все три необходимые записи (имя, фамилия, телефон) - есть. fName = TokenSpace->Strings[0]; lName = TokenSpace->Strings[1]; nTelefon = TokenSpace->Strings[2]; Memo2->Lines->Add("BEGIN:VCARD"); Memo2->Lines->Add("VERSION:2.1"); Memo2->Lines->Add("N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:" + fName + " " + lName); Memo2->Lines->Add("TEL;WORK:" + nTelefon); Memo2->Lines->Add("END:VCARD"); NameFile = String(FormatFloat("000", i) + ".txt"); Memo2->Lines->SaveToFile(NameFile); TokenSpace->Clear(); Memo2->Clear(); } } //--------------------------------------------------------------------------- |
------- Отправлено: 15:03, 19-06-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 198
|
Профиль | Отправить PM | Цитировать |
Отправлено: 18:03, 19-06-2012 | #3 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Автор походу даже не озвучил, на каком языке ему нужна реализация.
![]() |
------- Отправлено: 22:00, 19-06-2012 | #4 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Как раз тут-то и кроется загвоздка: я знаю только batch, который едва ли можно языком назвать)
![]() ![]() |
|
Отправлено: 22:50, 19-06-2012 | #5 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Код Drongo как раз для C++ Builder, вроде должен работать в 6 версии
|
Отправлено: 23:28, 19-06-2012 | #6 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата ferget:
|
|
------- Отправлено: 13:20, 20-06-2012 | #7 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Я так понимаю, нужно всё содержимое этого документа скопировать в поле MEMO1, да? Только при этом у меня вся кириллица заменяется вопросительными знаками, какую нужно использовать кодировку?
|
Отправлено: 07:59, 21-06-2012 | #8 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать У формы свойство Charset поставьте Russian_Charset или добавьте вот такие строки, при нажатии на кнопку выскочит диалоговое окно добавления файла, добавьте компонент OpenDialog на форму.
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString fName, lName, nTelefon, NameFile; TSysCharSet chSpace; chSpace<<' '; TStringList *TokenSpace = new TStringList(); Memo2->Clear(); if(OpenDialog1->Execute()){ Memo1->Lines->LoadFromFile(OpenDialog->FileName); for(int i = 0; i < Memo1->Lines->Count; i++){ ExtractStrings(chSpace, chSpace, Memo1->Lines->Strings[i].c_str(), TokenSpace); // Здесь можно поставить проверку на то что // все три необходимые записи (имя, фамилия, телефон) - есть. fName = TokenSpace->Strings[0]; lName = TokenSpace->Strings[1]; nTelefon = TokenSpace->Strings[2]; Memo2->Lines->Add("BEGIN:VCARD"); Memo2->Lines->Add("VERSION:2.1"); Memo2->Lines->Add("N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:" + fName + " " + lName); Memo2->Lines->Add("TEL;WORK:" + nTelefon); Memo2->Lines->Add("END:VCARD"); NameFile = String(FormatFloat("000", i) + ".txt"); Memo2->Lines->SaveToFile(NameFile); TokenSpace->Clear(); Memo2->Clear(); } } } //--------------------------------------------------------------------------- |
------- Отправлено: 16:57, 21-06-2012 | #9 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Ошибка, хотя OpenDialog благополучно стоит
|
Отправлено: 09:11, 22-06-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBA - Работа со строками | zena | Программирование и базы данных | 5 | 21-02-2011 09:03 | |
C/C++ - [решено] Работа со строками. Буфер содержит нуль-терминатор | Dr.Dark | Программирование и базы данных | 5 | 29-08-2010 16:13 | |
C/C++ - [решено] Работа с строками | crashtuak | Программирование и базы данных | 16 | 26-03-2009 01:21 | |
CMD/BAT - [решено] Работа со строками в cmd-файлах | melato | Скриптовые языки администрирования Windows | 3 | 30-01-2007 08:52 | |
Работа с почтовиком с помощью бат файла | lehha | Программирование и базы данных | 5 | 18-04-2003 03:08 |
|