.ics-Dateien

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
meister0815
Beiträge: 43
Registriert: Sa 26. Jun 2010, 17:10

.ics-Dateien

Beitrag von meister0815 »

Hallöchen zusammen,

Kennt jemand eine fertige Unit oder Komponente, um ics-Dateien (iCalendar) auslesen und bearbeiten zu können?
Ansonsten müsste ich die Dateien selbst parsen, was für mich ziemlich Unterkante/Oberlippe meiner Programmierfähigkeiten wäre... :mrgreen:

Gruß, Meister0815

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: .ics-Dateien

Beitrag von Hitman »


meister0815
Beiträge: 43
Registriert: Sa 26. Jun 2010, 17:10

Re: .ics-Dateien

Beitrag von meister0815 »

Hitman hat geschrieben:Ungetestet: http://sourceforge.net/projects/delphiical/


Danke für den Hinweis, ich habe versucht die Unit zu kompilieren (musste dazu "windows" aus uses entfernen), und es tritt genau ein Fehler auf:

aDate := StrToDate(s,DateFrmat) (wobei DateFrmat : TFormatSettings;) bringt den Fehler "wrong number of parameters. Habe auch gegooglet und herausgefunden, dass StrToDate normalerweise nur den String als Parameter hat. Das Format des Strings ist allerdings in dieser function sehr wichtig!

Hat jemand eine Idee, wie ich das lösen könnte?

Hier nochmal die ganze Function:

Code: Alles auswählen

function TiCalPackage.convertDate(iCalDate:String): TDateTime;
Var
  s,t : String;
  aDate : TDateTime;
begin
 //Convert the date
  s := iCalDate;
  MatStringDelete2End(s,'T');
  insert('\',s,5);
  insert('
\',s,8);
 //Convert the Time
  t := iCalDate;
  if pos(t,'
T') <> 0 then Begin
    MatStringDeleteUp2(t,'
T');
    insert('
-',t,3);
    insert('
-',t,6);
  end
  Else
    t := '
';
  if t <> '
' then
    aDate := StrToDate(s,DateFrmat.ShortDateFormat,'
/') + StrToTime(t,DateFrmat.ShortTimeFormat)
  else
    aDate := StrToDate(s,DateFrmat.ShortDateFormat) + Time;
  Result := aDate;
end;

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: .ics-Dateien

Beitrag von shokwave »

Du kannst vorher, mit

Code: Alles auswählen

ShortDateFormat:='yyyy-mm-dd';
  DateSeparator:='-';
das gewünschte Format festlegen.
mfg Ingo

meister0815
Beiträge: 43
Registriert: Sa 26. Jun 2010, 17:10

Re: .ics-Dateien

Beitrag von meister0815 »

shokwave hat geschrieben:Du kannst vorher, mit

Code: Alles auswählen

ShortDateFormat:='yyyy-mm-dd';
  DateSeparator:='-';
das gewünschte Format festlegen.

Mache ich ja, funktioniert aber nicht (selbst wenn ich das format direkt als String eingebe) da StrToDate nur einen einzigen Parameter erwartet/akzeptiert. Oder ist das bei dir anders? Also ohne "windows"-unit? Mehr Parameter funktionieren bei mir jedenfalls nicht.

PS: Habe irgendwo mal was von "parameter overloading" gehört, vielleicht klappt es damit? Ich weiß aber nicht, wie das geht...

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: .ics-Dateien

Beitrag von Teekeks »

Schreibe das von shockwave geschriebene am Anfang, und dann kannst du den 2. Parameter weglassen.

meister0815
Beiträge: 43
Registriert: Sa 26. Jun 2010, 17:10

Re: .ics-Dateien

Beitrag von meister0815 »

Danke für eure Antworten. Leider fühle ich mich irgendwie unverstanden, oder ich verstehe euch nicht... sorry, wenn ich mich unklar ausgedrückt habe.

Vielleicht probiert ihr es einfach mal selbst, indem ihr folgendes ausprobiert (ohne windows in uses):

Code: Alles auswählen

procedure test;
var
  str: String;
  aDate: TDateTime;
  strFormat: TFormatSettings;
begin
  str:='2010/11/08';
  strFormat.ShortDateFormat:='yyyy/mm/dd';
  strFormat.DateSeparator:='/';
  aDate:= strToDate(str, strFormat);
  ShowMessage(DateToStr(aDate));
end;


Dann seht ihr den Fehler, und versteht hoffentlich, was ich meine...

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: .ics-Dateien

Beitrag von shokwave »

Code: Alles auswählen

var
  str: String;
  aDate: TDateTime;
begin
  str:='2010/11/08';
  ShortDateFormat:='yyyy/mm/dd';
  DateSeparator:='/';
  aDate:= StrToDate(str);
  ShowMessage(DateToStr(aDate));
end;

Wahrscheinlich hatte ich mich nicht klar genug ausgedrückt. StrToDate/DateToStr hat nur einen Parameter, deshalb musst du vor dem Aufruf der Funktionen das gewünschte Format setzten (einmal im OnCreate reicht).
mfg Ingo

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: .ics-Dateien

Beitrag von Hitman »

Probiers mal mit StrToDateTime - davon gibts eine überladene Version, der du die FormatSettings übergeben kannst.

Edit: geht sogar noch einfacher, nämlich ganz ohne extra FormatSettings:
aDate:= strToDate(str, 'yyyy/mm/dd', '/');

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: .ics-Dateien

Beitrag von shokwave »

Du hast Recht, für StrToDate kann man Format und Seperator in die Parameter packen. Bei DateToStr muss man FormatSettings nehmen.

Ist schon ein wenig inkonsistent die Geschichte...
mfg Ingo

meister0815
Beiträge: 43
Registriert: Sa 26. Jun 2010, 17:10

Re: .ics-Dateien

Beitrag von meister0815 »

Hitman hat geschrieben:Probiers mal mit StrToDateTime - davon gibts eine überladene Version, der du die FormatSettings übergeben kannst.

Edit: geht sogar noch einfacher, nämlich ganz ohne extra FormatSettings:
aDate:= strToDate(str, 'yyyy/mm/dd', '/');


So läufts eben bei mir nicht! Bist Du sicher, dass du "Windows" aus Uses entfernt hast? Ob das wohl ein Plattform-Unterschied ist? Ich verwende jedenfalls die neuste Lazarus-Version vom SVG.

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: .ics-Dateien

Beitrag von Hitman »

Also bei mir kompilierts ... siehe Anhang. Ist aber nur äußerst notdürftig geflickt, die ganze Unit hat anscheinend recht viel Verbesserungsbedarf :D
Dateianhänge
iCalCls.pas
(12.61 KiB) 133-mal heruntergeladen

Antworten