Check-in [3bdccd5cd5]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Added project to export ProjectIt.dat to an iCalendar file.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 3bdccd5cd570ebfaf1b39960763c1d65d3dee3a0
User & Date: MCO 2012-05-29 15:57:49
Context
2012-06-11
16:09
Keep track of current project, and publish what's been spent on it so far. check-in: b9e83e2b17 user: MCO tags: trunk
2012-05-29
15:57
Added project to export ProjectIt.dat to an iCalendar file. check-in: 3bdccd5cd5 user: MCO tags: trunk
2011-05-12
08:24
Removed time from datepicker; Added mindate to datepicker; restricted automatic adding of row to today check-in: fd00aaf3f0 user: MCO tags: trunk
Changes

Added DAT2ICS/src/ProjectIt_dat2ics.dpr.

































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
program ProjectIt_dat2ics;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SysUtils, Classes, IniFiles, StrUtils,
  Types, MessageDigest_5 in 'C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\source\soap\wsdlimporter\MessageDigest_5.pas',
  SQLite3Database, SQLite3Abstract;

{ ------------------------------------------------------------------------------------------------ }
function LoadData(const DataFile: TFilename; var DB: TSQLiteDatabase): Integer;
var
  Data: TIniFile;
  InsertActivity: TCustomSQLiteQuery;
  Projects, Entries: TStringList;
  InitialChanges: Int64;
  pi, ei: Integer;
  sProject: string;
  sKey: string;
  dtDummy: TDateTime;
begin
  if not FileExists(DataFile) then
    raise EFileNotFoundException.CreateFmt('File "%s" not found.', [DataFile]);

  Data := TIniFile.Create(DataFile);
  try
    if DB = nil then
      DB := TSQLiteDatabase.Create(':memory:');

    if not DB.TableExists('Projects') then
      DB.Execute('CREATE TABLE Projects '
                + '( id INTEGER PRIMARY KEY'
                + ', name TEXT NOT NULL UNIQUE COLLATE NOCASE'
                + ');');
    if not DB.TableExists('Activities') then
      DB.Execute('CREATE TABLE Activities'
                + '( id INTEGER PRIMARY KEY'
                + ', project_id INTEGER NOT NULL REFERENCES Projects'
                + ', start DOUBLE NOT NULL'
                + ', duration INTEGER NOT NULL'
                + ', UNIQUE (project_id, start)'
                + ');');
    DB.Execute('CREATE VIEW IF NOT EXISTS ProjectActivities AS '
            + ' SELECT p.name AS project, datetime(a.start) AS start, duration, datetime(a.start, "+" || a.duration || " seconds") AS finish'
            + '   FROM Projects p INNER JOIN Activities a ON p.id = a.project_id'
            + ';');
    DB.Execute('CREATE TRIGGER IF NOT EXISTS vi_ProjectActivities '
            + ' INSTEAD OF INSERT ON ProjectActivities'
            + ' FOR EACH ROW'
            + ' BEGIN'
            + '   INSERT OR IGNORE  INTO Projects (name) VALUES (NEW.project);'
            + '   INSERT OR REPLACE INTO Activities (project_id, start, duration)'
            + '        SELECT p.id'
            + '        ,      julianday(NEW.start)'
            + '        ,      NEW.duration'
            + '          FROM Projects p'
            + '         WHERE p.name = NEW.project;'
            + ' END;'
            );

    InsertActivity := DB.PrepareSQL('INSERT INTO ProjectActivities(project, start, duration) '
                                  + 'VALUES(:Project, :Start, :Duration)');
    Projects := TStringList.Create;
    Entries := TStringList.Create;
    try
      Data.ReadSections(Projects);
      InitialChanges := DB.TotalChanges;
      Result := 0;
      DB.BeginTransaction;
      try
        for pi := 0 to Projects.Count - 1 do begin
          sProject := Projects[pi];
          Entries.Clear;
          Data.ReadSection(sProject, Entries);
          for ei := 0 to Entries.Count - 1 do begin
            sKey := Entries[ei];
            if TryStrToDateTime(sKey, dtDummy, DB.FormatSettings) then begin
              InsertActivity.Parameters.Named[':Project'].SetValue(sProject);
              InsertActivity.Parameters.Named[':Start'].SetValue(sKey);
              InsertActivity.Parameters.Named[':Duration'].SetValue(Data.ReadInteger(sProject, sKey, 0));
              DB.Execute(InsertActivity);
            end;
          end;
        end;
        Result := DB.TotalChanges - InitialChanges;
        DB.Commit;
      except
        DB.Rollback;
        Result := 0;
        raise;
      end;
    finally
      Entries.Free;
      Projects.Free;
      InsertActivity.Free;
    end;
  finally
    Data.Free;
  end;
end {LoadData};

{ ------------------------------------------------------------------------------------------------ }
function ExportToICS(const DB: TSQLiteDatabase; const ICSFilename: TFilename): Integer;
var
  SB: TStringBuilder;
  Rows: TCustomSQLiteCursor;
  SS: TStringStream;
  iProject, iStart, iFinish: Integer;
  MD5: IMD5;
  sHash8: UTF8String;
  sHash: string;
begin
  SB := TStringBuilder.Create(10240);
  try
    Rows := DB.GetCursor('  SELECT p.name'
                      + '   ,      strftime("%Y%m%dT%H%M%S", a.start, "utc") || "Z" AS start'
                      + '   ,      strftime("%Y%m%dT%H%M%S", a.start, "+" || a.duration || " seconds", "utc") || "Z" AS finish'
                      + '     FROM Activities a'
                      + '          INNER JOIN Projects p ON a.project_id = p.id'
                      + '    WHERE a.duration >= (60 * 5)'
                      + '      AND p.name != "Pauze"'
                      + ' ORDER BY a.start DESC'
                      + ' ,        a.duration DESC'
                      + ' ,        p.id DESC'
                      + ' ,        a.id DESC;');
    try
      Result := 0;
      if not Rows.EOF then begin
        SB.Append('BEGIN:VCALENDAR').AppendLine;
        SB.Append('PRODID:-//martijn.coppoolse.com/ProjectIt v1 dat2ics//NL').AppendLine;
        SB.Append('VERSION:2.0').AppendLine;
        SB.Append('CALSCALE:GREGORIAN').AppendLine;
        SB.Append('METHOD:PUBLISH').AppendLine;
        SB.Append('X-WR-NAME:ProjectIt!').AppendLine;

        iProject := Rows.FieldIndex('name');
        iStart := Rows.FieldIndex('start');
        iFinish := Rows.FieldIndex('finish');

        while not Rows.EOF do begin
          sHash8 := UTF8String(Rows.Fields[iProject].AsString + '|' + Rows.Fields[iFinish].AsString);
          MD5 := GetMD5;
          MD5.Init;
          MD5.Update(TByteDynArray(sHash8), Length(sHash8));
          sHash := LowerCase(MD5.AsString);

          SB.Append('BEGIN:VEVENT').AppendLine;
          SB.Append('DTSTART:' + Rows.Fields[iStart].AsString).AppendLine;
          SB.Append('DTEND:' + Rows.Fields[iFinish].AsString).AppendLine;
          SB.Append('SUMMARY:' + Rows.Fields[iProject].AsString).AppendLine;
          SB.Append('CATEGORIES:' + Rows.Fields[iProject].AsString).AppendLine;
          SB.Append('UID:' + sHash + '@v1a.projectit.2of4.net').AppendLine;
          SB.Append('LAST-MODIFIED:' + Rows.Fields[iFinish].AsString).AppendLine;
          SB.Append('CLASS:PUBLIC').AppendLine;
          SB.Append('STATUS:CONFIRMED').AppendLine;
          SB.Append('TRANSP:OPAQUE').AppendLine;
          SB.Append('END:VEVENT').AppendLine;

          Inc(Result);
          Rows.Next;
        end;
        SB.Append('END:VCALENDAR').AppendLine;
      end;
    finally
      Rows.Free;
    end;

    if Length(ICSFilename) > 0 then begin
      SS := TStringStream.Create(SB.ToString, TEncoding.UTF8, False);
      try
        SS.SaveToFile(ICSFilename);
      finally
        SS.Free;
      end;
    end else begin
      Write(SB.ToString);
    end;
  finally
    SB.Free;
  end;
end {ExportToICS};

{ ------------------------------------------------------------------------------------------------ }
function ParseParams(var Named, Unnamed: TStringList): Integer;
var
  i: Integer;
  Name, Value: string;
begin
  for i := 1 to ParamCount do begin
    Value := ParamStr(i);

  end;

end {ParseParams};

{ ================================================================================================ }
var
  InputFile, OutputFile: string;
  DB: TSQLiteDatabase;
  Count: Integer;
begin
  try
    InputFile := ParamStr(1);
    OutputFile := ParamStr(2);

//    DB := TSQLiteDatabase.Create(InputFile + '.sqlite');
    Count := LoadData(InputFile, DB);
    try
      Writeln(Count, ' items imported from "', InputFile, '".');

      Count := ExportToICS(DB, OutputFile);
      WriteLn(Count, ' events exported to "', OutputFile, '".');
    finally
      DB.Free;
    end;
  except
    on E: Exception do begin
      Writeln(ErrOutput, E.ClassName, ': ', E.Message);
      Halt(2);
    end;
  end;
end.

Added DAT2ICS/src/ProjectIt_dat2ics.dproj.



















































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
	<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
		<PropertyGroup>
			<ProjectGuid>{784C4AD6-0E92-4A2B-B201-5AA2F2B66E78}</ProjectGuid>
			<ProjectVersion>13.4</ProjectVersion>
			<FrameworkType>None</FrameworkType>
			<MainSource>ProjectIt_dat2ics.dpr</MainSource>
			<Base>True</Base>
			<Config Condition="'$(Config)'==''">Debug</Config>
			<Platform Condition="'$(Platform)'==''">Win32</Platform>
			<TargetedPlatforms>1</TargetedPlatforms>
			<AppType>Console</AppType>
		</PropertyGroup>
		<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
			<Base>true</Base>
		</PropertyGroup>
		<PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
			<Base_Win64>true</Base_Win64>
			<CfgParent>Base</CfgParent>
			<Base>true</Base>
		</PropertyGroup>
		<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
			<Base_Win32>true</Base_Win32>
			<CfgParent>Base</CfgParent>
			<Base>true</Base>
		</PropertyGroup>
		<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
			<Cfg_1>true</Cfg_1>
			<CfgParent>Base</CfgParent>
			<Base>true</Base>
		</PropertyGroup>
		<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
			<Cfg_1_Win32>true</Cfg_1_Win32>
			<CfgParent>Cfg_1</CfgParent>
			<Cfg_1>true</Cfg_1>
			<Base>true</Base>
		</PropertyGroup>
		<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
			<Cfg_2>true</Cfg_2>
			<CfgParent>Base</CfgParent>
			<Base>true</Base>
		</PropertyGroup>
		<PropertyGroup Condition="'$(Base)'!=''">
			<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
			<Manifest_File>None</Manifest_File>
			<VerInfo_Locale>1043</VerInfo_Locale>
			<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
			<DCC_UnitSearchPath>.\;Lib\;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
			<DCC_UsePackage>bindcompfmx;fmx;rtl;dbrtl;IndySystem;DbxClientDriver;bindcomp;inetdb;DBXInterBaseDriver;xmlrtl;DbxCommonDriver;IndyProtocols;DBXMySQLDriver;dbxcds;soaprtl;bindengine;CustomIPTransport;dsnap;IndyCore;fmxase;inet;fmxobj;inetdbxpress;fmxdae;dbexpress;IPIndyImpl;$(DCC_UsePackage)</DCC_UsePackage>
			<DCC_DcuOutput>..\Out\DCU\$(Platform)\$(Config)</DCC_DcuOutput>
			<DCC_ExeOutput>..\Out\$(Platform)\$(Config)</DCC_ExeOutput>
			<DCC_E>false</DCC_E>
			<DCC_N>false</DCC_N>
			<DCC_S>false</DCC_S>
			<DCC_F>false</DCC_F>
			<DCC_K>false</DCC_K>
		</PropertyGroup>
		<PropertyGroup Condition="'$(Base_Win64)'!=''">
			<DCC_UsePackage>vclimg;vclactnband;vcldb;bindcompvcl;vcldsnap;vclie;vcltouch;websnap;VclSmp;vcl;dsnapcon;vclx;webdsnap;$(DCC_UsePackage)</DCC_UsePackage>
		</PropertyGroup>
		<PropertyGroup Condition="'$(Base_Win32)'!=''">
			<Debugger_RunParams>C:\MC\Run\Own\ProjectIt\ProjectIt.dat C:\MC\Run\Own\ProjectIt\ProjectIt.ics</Debugger_RunParams>
			<DCC_UsePackage>vcldbx;frx16;TeeDB;Rave100VCL;vclib;Tee;inetdbbde;svnui;ibxpress;vclimg;intrawebdb_120_160;fmi;frxDB16;fs16;vclactnband;FMXTee;vcldb;TeeUI;bindcompvcl;vcldsnap;vclie;vcltouch;Intraweb_120_160;websnap;vclribbon;VclSmp;frxe16;fsDB16;vcl;CloudService;CodeSiteExpressPkg;FmxTeeUI;dsnapcon;vclx;webdsnap;svn;bdertl;adortl;$(DCC_UsePackage)</DCC_UsePackage>
			<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
			<VerInfo_Locale>1033</VerInfo_Locale>
		</PropertyGroup>
		<PropertyGroup Condition="'$(Cfg_1)'!=''">
			<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
			<DCC_Optimize>false</DCC_Optimize>
			<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
			<DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
			<DCC_RemoteDebug>true</DCC_RemoteDebug>
		</PropertyGroup>
		<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
			<VerInfo_Locale>1033</VerInfo_Locale>
			<DCC_RemoteDebug>false</DCC_RemoteDebug>
		</PropertyGroup>
		<PropertyGroup Condition="'$(Cfg_2)'!=''">
			<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
			<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
			<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
			<DCC_DebugInformation>false</DCC_DebugInformation>
		</PropertyGroup>
		<ItemGroup>
			<DelphiCompile Include="$(MainSource)">
				<MainSource>MainSource</MainSource>
			</DelphiCompile>
			<DCCReference Include="C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\source\soap\wsdlimporter\MessageDigest_5.pas"/>
			<BuildConfiguration Include="Release">
				<Key>Cfg_2</Key>
				<CfgParent>Base</CfgParent>
			</BuildConfiguration>
			<BuildConfiguration Include="Base">
				<Key>Base</Key>
			</BuildConfiguration>
			<BuildConfiguration Include="Debug">
				<Key>Cfg_1</Key>
				<CfgParent>Base</CfgParent>
			</BuildConfiguration>
		</ItemGroup>
		<ProjectExtensions>
			<Borland.Personality>Delphi.Personality.12</Borland.Personality>
			<Borland.ProjectType/>
			<BorlandProject>
				<Delphi.Personality>
					<VersionInfo>
						<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
						<VersionInfo Name="AutoIncBuild">False</VersionInfo>
						<VersionInfo Name="MajorVer">1</VersionInfo>
						<VersionInfo Name="MinorVer">0</VersionInfo>
						<VersionInfo Name="Release">0</VersionInfo>
						<VersionInfo Name="Build">0</VersionInfo>
						<VersionInfo Name="Debug">False</VersionInfo>
						<VersionInfo Name="PreRelease">False</VersionInfo>
						<VersionInfo Name="Special">False</VersionInfo>
						<VersionInfo Name="Private">False</VersionInfo>
						<VersionInfo Name="DLL">False</VersionInfo>
						<VersionInfo Name="Locale">1043</VersionInfo>
						<VersionInfo Name="CodePage">1252</VersionInfo>
					</VersionInfo>
					<VersionInfoKeys>
						<VersionInfoKeys Name="CompanyName"/>
						<VersionInfoKeys Name="FileDescription"/>
						<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
						<VersionInfoKeys Name="InternalName"/>
						<VersionInfoKeys Name="LegalCopyright"/>
						<VersionInfoKeys Name="LegalTrademarks"/>
						<VersionInfoKeys Name="OriginalFilename"/>
						<VersionInfoKeys Name="ProductName"/>
						<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
						<VersionInfoKeys Name="Comments"/>
					</VersionInfoKeys>
					<Source>
						<Source Name="MainSource">ProjectIt_dat2ics.dpr</Source>
					</Source>
					<Excluded_Packages>
						<Excluded_Packages Name="$(BDSBIN)\dcloffice2k160.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
						<Excluded_Packages Name="$(BDSBIN)\dclofficexp160.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
						<Excluded_Packages Name="$(BDSBIN)\bcboffice2k160.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
						<Excluded_Packages Name="$(BDSBIN)\bcbofficexp160.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
					</Excluded_Packages>
				</Delphi.Personality>
				<Deployment/>
				<Platforms>
					<Platform value="Win64">False</Platform>
					<Platform value="OSX32">False</Platform>
					<Platform value="Win32">True</Platform>
				</Platforms>
			</BorlandProject>
			<ProjectFileVersion>12</ProjectFileVersion>
		</ProjectExtensions>
		<Import Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')" Project="$(BDS)\Bin\CodeGear.Delphi.Targets"/>
		<Import Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')" Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj"/>
	</Project>

Changes to Entry/src/prj/D2010/Olam.dproj.

80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
					</Parameters>
					<VersionInfo>
						<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
						<VersionInfo Name="AutoIncBuild">True</VersionInfo>
						<VersionInfo Name="MajorVer">1</VersionInfo>
						<VersionInfo Name="MinorVer">0</VersionInfo>
						<VersionInfo Name="Release">0</VersionInfo>
						<VersionInfo Name="Build">9</VersionInfo>
						<VersionInfo Name="Debug">False</VersionInfo>
						<VersionInfo Name="PreRelease">False</VersionInfo>
						<VersionInfo Name="Special">False</VersionInfo>
						<VersionInfo Name="Private">True</VersionInfo>
						<VersionInfo Name="DLL">False</VersionInfo>
						<VersionInfo Name="Locale">1043</VersionInfo>
						<VersionInfo Name="CodePage">1252</VersionInfo>
					</VersionInfo>
					<VersionInfoKeys>
						<VersionInfoKeys Name="CompanyName">Martijn Coppoolse</VersionInfoKeys>
						<VersionInfoKeys Name="FileDescription">Olam Work registration helper</VersionInfoKeys>
						<VersionInfoKeys Name="FileVersion">1.0.0.9</VersionInfoKeys>
						<VersionInfoKeys Name="InternalName">Olam</VersionInfoKeys>
						<VersionInfoKeys Name="LegalCopyright"/>
						<VersionInfoKeys Name="LegalTrademarks"/>
						<VersionInfoKeys Name="OriginalFilename"/>
						<VersionInfoKeys Name="ProductName"/>
						<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
						<VersionInfoKeys Name="Comments"/>







|











|







80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
					</Parameters>
					<VersionInfo>
						<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
						<VersionInfo Name="AutoIncBuild">True</VersionInfo>
						<VersionInfo Name="MajorVer">1</VersionInfo>
						<VersionInfo Name="MinorVer">0</VersionInfo>
						<VersionInfo Name="Release">0</VersionInfo>
						<VersionInfo Name="Build">10</VersionInfo>
						<VersionInfo Name="Debug">False</VersionInfo>
						<VersionInfo Name="PreRelease">False</VersionInfo>
						<VersionInfo Name="Special">False</VersionInfo>
						<VersionInfo Name="Private">True</VersionInfo>
						<VersionInfo Name="DLL">False</VersionInfo>
						<VersionInfo Name="Locale">1043</VersionInfo>
						<VersionInfo Name="CodePage">1252</VersionInfo>
					</VersionInfo>
					<VersionInfoKeys>
						<VersionInfoKeys Name="CompanyName">Martijn Coppoolse</VersionInfoKeys>
						<VersionInfoKeys Name="FileDescription">Olam Work registration helper</VersionInfoKeys>
						<VersionInfoKeys Name="FileVersion">1.0.0.10</VersionInfoKeys>
						<VersionInfoKeys Name="InternalName">Olam</VersionInfoKeys>
						<VersionInfoKeys Name="LegalCopyright"/>
						<VersionInfoKeys Name="LegalTrademarks"/>
						<VersionInfoKeys Name="OriginalFilename"/>
						<VersionInfoKeys Name="ProductName"/>
						<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
						<VersionInfoKeys Name="Comments"/>

Changes to Entry/src/prj/D2010/Olam.res.

cannot compute difference between binary files