PDA

Просмотр полной версии : Нуждаюсь в помощи


KiPa
24.01.2008, 22:01
Доброго времени суток!
Вот столкнулся с небольшой проблемой...
Нужно написать программу перевода форматов 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%spcale ndar;

{events}
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

{tasks}
TASK[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:%c2;
STATUS:important;PRIORITY:high;COMPLETED;false;PER COMPLETE: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>

Люди, помогите, мне хотябы кусок программы (начало)...ато выгонят с института блин.

Delimiter
24.01.2008, 22:07
язык какой нужен????

KiPa
24.01.2008, 22:09
язык какой нужен????
Юникс

z01b
24.01.2008, 22:15
Юникс
Юникс, это ОС.
2 Delimiter Если не ошибаюсь ему нужно на C, чтоб в юниксе с gcc компилился без проблем.

blackybr
24.01.2008, 22:45
имхо лучше на маке пиши.. он более гибкий язык

:ddd

Delimiter
25.01.2008, 01:07
ну давайте по тихоньку помогем, :)
.... хоть я и не понял как там делить на 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 :cool:
кароче .... если бы я понял :D ,чего тебе нужно я бы и сам написал а так рассказал о моей очччень нужной
функции ;)

KiPa
25.01.2008, 01:21
Спасибо огромное!!! даже не ожидал такого быстрого отклика...СПАСИБО.
этот код компилируется в gcc?

z01b
25.01.2008, 01:24
Спасибо огромное!!! даже не ожидал такого быстрого отклика...СПАСИБО.
этот код компилируется в gcc?
Да, без проблем.