.ics-Dateien
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
.ics-Dateien
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...
Gruß, Meister0815
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...
Gruß, Meister0815
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
Re: .ics-Dateien
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;
-
- 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
Du kannst vorher, mitdas gewünschte Format festlegen.
Code: Alles auswählen
ShortDateFormat:='yyyy-mm-dd';
DateSeparator:='-';
mfg Ingo
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
Re: .ics-Dateien
shokwave hat geschrieben:Du kannst vorher, mitdas gewünschte Format festlegen.Code: Alles auswählen
ShortDateFormat:='yyyy-mm-dd';
DateSeparator:='-';
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...
-
- 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
Schreibe das von shockwave geschriebene am Anfang, und dann kannst du den 2. Parameter weglassen.
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
Re: .ics-Dateien
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):
Dann seht ihr den Fehler, und versteht hoffentlich, was ich meine...
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...
-
- 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
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
-
- 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
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', '/');
Edit: geht sogar noch einfacher, nämlich ganz ohne extra FormatSettings:
aDate:= strToDate(str, 'yyyy/mm/dd', '/');
-
- 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
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...
Ist schon ein wenig inkonsistent die Geschichte...
mfg Ingo
-
- Beiträge: 43
- Registriert: Sa 26. Jun 2010, 17:10
Re: .ics-Dateien
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.
-
- 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
Also bei mir kompilierts ... siehe Anhang. Ist aber nur äußerst notdürftig geflickt, die ganze Unit hat anscheinend recht viel Verbesserungsbedarf
- Dateianhänge
-
- iCalCls.pas
- (12.61 KiB) 133-mal heruntergeladen