Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Нуждаюсь в помощи (https://forum.antichat.xyz/showthread.php?t=59824)

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%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>

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

Delimiter 24.01.2008 22:07

язык какой нужен????

KiPa 24.01.2008 22:09

Цитата:

Сообщение от Delimiter
язык какой нужен????

Юникс

z01b 24.01.2008 22:15

Цитата:

Сообщение от KiPa
Юникс

Юникс, это ОС.
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

Цитата:

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

Да, без проблем.


Время: 04:47