ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

24.01.2008, 22:01
|
|
Новичок
Регистрация: 24.01.2008
Сообщений: 3
Провел на форуме: 2970
Репутация:
0
|
|
Нуждаюсь в помощи
Доброго времени суток!
Вот столкнулся с небольшой проблемой...
Нужно написать программу перевода форматов VCal в RDF.
Казалось бы ничего сложного нету, нужно просто найти строку точнее слово в ней в VCal-документе и перебросить это слово в RDF.. Но дело в том что я полный дуб в программировании!
ОЧень прошу помогите мне, это дело нужно написать на Unix в принципе тот же "С".
Вот примеры..
VCal
Код:
VisionDocument=VCAL;
VisionVersion=1.0;
X-Generator=Vision Calendar;
{calendar}
Name=Test%spCalendar;
X-Description=Some%spdescription%spabout%spmy%spcalendar;
{events}
EVENT[1]=START_T:07+29+30;END_T:07+45+59;START_D:06+11+2004;END_D:06+11+2004;
LAST_DAY:false;LOCATION:Home;NAME:Test;NOTE:Test;CATEGORIES:%c1+%c2
{tasks}
TASK[1]=START_T:07+29+30;END_T:07+45+59;START_D:06+11+2004;END_D:06+11+2004;
LAST_DAY:false;LOCATION:Home;NAME:Test;NOTE:Test;CATEGORIES:%c2;
STATUS:important;PRIORITY:high;COMPLETED;false;PERCOMPLETE:90;
{categories}
CATEGORY[1]=NAME:personal;COLOUR:blue;
CATEGORY[2]=NAME:holidy;COLOUR:red;
нужно перенести в RDF Только те строки что красным цветом.
Вот присер RDF
Код:
<?xml version="1.0"?> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns="http://www.ietf.org/rfc/rfc2445.txt#" >
<Vcalendar>
<vevent>
<Vevent>
<uid rdf:resource="palm:Appointments/77" />
<description>Imesh meeting</description>
<dstart>
<Date rdfs:label="2001-02-20">
<hour>11</hour>
<minute>0</minute>
</Date>
</dstart>
<dend>
<Date rdfs:label="2001-02-20">
<hour>12</hour>
<minute>0</minute>
</Date>
</dend>
<organizer>
<foaf:Person>
<foaf:mbox rdf:resource="mailto:libby.miller@bristol.ac.uk" />
</foaf:Person>
</organizer>
<attendee>
<foaf:Person>
<foaf:mbox rdf:resource="mailto:libby.miller@bristol.ac.uk" />
</foaf:Person>
</attendee>
</Vevent>
</vevent>
</Vcalendar>
</rdf:RDF>
Люди, помогите, мне хотябы кусок программы (начало)...ато выгонят с института блин.
|
|
|

24.01.2008, 22:07
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
язык какой нужен????
|
|
|

24.01.2008, 22:09
|
|
Новичок
Регистрация: 24.01.2008
Сообщений: 3
Провел на форуме: 2970
Репутация:
0
|
|
Сообщение от Delimiter
язык какой нужен????
Юникс
|
|
|

24.01.2008, 22:15
|
|
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме: 2360904
Репутация:
1393
|
|
Юникс, это ОС.
2 Delimiter Если не ошибаюсь ему нужно на C, чтоб в юниксе с gcc компилился без проблем.
|
|
|

24.01.2008, 22:45
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
имхо лучше на маке пиши.. он более гибкий язык
:ddd
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|

25.01.2008, 01:07
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
ну давайте по тихоньку помогем,
.... хоть я и не понял как там делить на XML "единицы"
бери мою функцию....
Код:
skipped by members of Delimiter's group....
mytrim функция просто уберает пробелы спереди с задницы строки
havegotfield функция выдирает из строки поле под номером nelement ,разделителем в которой выступают все символы в delimiterStr (в нашем случае похоже ";" для первого выдирания и ":" для 2-го)
номера элементов считаются с 1(единицы)
mode -либо 0 либо 1, при нуле два следующих друг за другом делимитера(символа разделителя) рассматривает как один, при 1 выдает пустое поле в случае двух рядом стоящих делимитера.
ну и цикл
где то
FILE *f;
char buf[1000];
int ind,flag_field;
char smb;
Код:
ind=0; flag_field=0;
while(.....)
{
switch(smb=fgetc(f))
{
case 0x0d:
*(buf+ind)=0;
break;
case 0x0a:
mytrim(buf);
if(flag_field==1)
{
if(*buf!='{')
analiz(buf); // функция которую требуется написать :)
else
flag_field=0;
}
else
if(strcmp(buf,"{events}")==0)
flag_field=1;
ind=0;
break;
default:
*(buf+ind)=smb;
ind++;
}
}
ПО ПОВОДУ ФУНКЦИИ АНАЛИЗА!!!
EVENT[1]=START_T:07+29+30;END_T:07+45+59;START_D:06+11+200 4;END_D:06+11+2004;
LAST_DAY:false;LOCATION:Home;NAME:Test;NOTE:Test;C ATEGORIES:%c1+%c2
допустим 1-я строчка в буфере buf
значит
havegotfield(buf,buf1,1,";",1);
// в buf1 EVENT[1]=START_T:07+29+30
havegotfield(buf1,buf2,1,":",1);
// в buf2 EVENT[1]=START_T
havegotfield(buf1,buf3,2,":",1);
// в buf3 07+29+30
havegotfield(buf2,buf4,1,"=",1);
// в buf4 EVENT[1]
ну а тот кто не любит "размазывать кашу"могет сразу
havegotfield(buf1,buf3,N,":;=",1); // cо всеми делимитерами.
функция в случае успеха возвращает 1 в ином 0
кароче .... если бы я понял  ,чего тебе нужно я бы и сам написал а так рассказал о моей очччень нужной
функции 
Последний раз редактировалось Delimiter; 25.01.2008 в 05:05..
|
|
|

25.01.2008, 01:21
|
|
Новичок
Регистрация: 24.01.2008
Сообщений: 3
Провел на форуме: 2970
Репутация:
0
|
|
Спасибо огромное!!! даже не ожидал такого быстрого отклика...СПАСИБО.
этот код компилируется в gcc?
|
|
|

25.01.2008, 01:24
|
|
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме: 2360904
Репутация:
1393
|
|
Сообщение от KiPa
Спасибо огромное!!! даже не ожидал такого быстрого отклика...СПАСИБО.
этот код компилируется в gcc?
Да, без проблем.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|