Changeset 362
- Timestamp:
- May 10, 2012, 1:18:25 PM (13 years ago)
- Location:
- PersistentData
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
PersistentData/Backend/UPDClientMemory.pas
r361 r362 14 14 TPDClientMemory = class(TPDClient) 15 15 protected 16 FLastObjectId: Integer; 16 17 procedure InitSystemTypes; override; 17 18 function GetConnected: Boolean; override; 18 19 procedure Init; override; 20 function GetNewObjectId: Integer; 21 function SearchObject(Id: Integer): TObjectProxy; 19 22 public 20 23 Objects: TListObject; … … 35 38 end; 36 39 40 resourcestring 41 SObjectNotFound = 'Object with id %s not found'; 42 37 43 implementation 38 44 … … 54 60 end; 55 61 62 function TPDClientMemory.GetNewObjectId: Integer; 63 begin 64 Inc(FLastObjectId); 65 Result := FLastObjectId; 66 end; 67 68 function TPDClientMemory.SearchObject(Id: Integer): TObjectProxy; 69 var 70 I: Integer; 71 begin 72 I := 0; 73 while (I < Objects.Count) and 74 (TObjectProxy(Objects[I]).Id <> Id) do Inc(I); 75 if I < Objects.Count then Result := TObjectProxy(Objects[I]) 76 else Result := nil; 77 end; 78 56 79 procedure TPDClientMemory.ObjectLoad(AObject: TObjectProxy); 57 begin 58 80 var 81 Obj: TObjectProxy; 82 begin 83 if AObject.Id = 0 then raise Exception.Create(SCantLoadObjectWithoutId); 84 Obj := SearchObject(AObject.Id); 85 if Assigned(Obj) then AObject.Assign(Obj) 86 else raise Exception.CreateFmt(SObjectNotFound, [AObject.Id]); 59 87 end; 60 88 61 89 procedure TPDClientMemory.ObjectSave(AObject: TObjectProxy); 62 begin 63 90 var 91 I: Integer; 92 Obj: TObjectProxy; 93 begin 94 if AObject.Id = 0 then raise Exception.Create(SCantLoadObjectWithoutId); 95 Obj := SearchObject(AObject.Id); 96 if Assigned(Obj) then Obj.Assign(AObject) 97 else begin 98 AObject.Id := GetNewObjectId; 99 Obj := TObjectProxy(Objects.AddNew(TObjectProxy.Create)); 100 Obj.Assign(AObject); 101 end; 64 102 end; 65 103 66 104 procedure TPDClientMemory.ObjectDelete(AObject: TObjectProxy); 67 begin 68 105 var 106 Obj: TObjectProxy; 107 begin 108 Obj := SearchObject(AObject.Id); 109 if Assigned(Obj) then Objects.Delete(Objects.IndexOf(Obj)) 110 else raise Exception.CreateFmt(SObjectNotFound, [AObject.Id]) 69 111 end; 70 112 71 113 procedure TPDClientMemory.ListLoad(AList: TListProxy); 72 begin 73 114 var 115 Filter: string; 116 DbCondition: string; 117 I: Integer; 118 P: Integer; 119 NewObject: TObjectProxy; 120 Table: string; 121 begin 122 AList.Objects.Clear; 123 for I := 0 to Objects.Count - 1 do 124 with TObjectProxy(Objects[I]) do begin 125 if 1 = 1 then begin 126 NewObject := TObjectProxy.Create; 127 NewObject.Properties.Assign(Properties); 128 NewObject.Client := AList.Client; 129 NewObject.ObjectName := AList.ObjectName; 130 NewObject.Path := AList.Path; 131 AList.Objects.Add(NewObject); 132 133 if AList.ColummsFilterUse then begin 134 for P := 0 to Properties.Count - 1 do 135 if AList.ColumnsFilter.IndexOf(Properties.Keys[I]) <> -1 then 136 NewObject.Properties.Add(Properties.Keys[I], Properties[I].Value); 137 end else NewObject.Properties.Assign(Properties); 138 end; 139 end; 140 if AList.OrderUse then begin 141 142 end; 143 if AList.PageUse then begin 144 end; 74 145 end; 75 146 -
PersistentData/Backend/UPDClientMySQL.pas
r361 r362 50 50 resourcestring 51 51 SMissingBaseType = 'Missing base typ for %s'; 52 SUndefinedType = 'Undefinned type %s'; 53 SCantLoadObjectWithoutId = 'Can''t load object without id'; 52 SUndefinedType = 'Undefined type in %0:s.%1:s'; 54 53 55 54 … … 172 171 for I := 0 to AType.Properties.Count - 1 do 173 172 with AType.Properties do begin 174 RefType := T ypes.SearchByName(Items[I].Value);173 RefType := TPDTypeProperty(Items[I]).DbType; 175 174 if not Assigned(RefType) then 176 raise Exception.Create(Format(SUndefinedType, [ Items[I].Value]));175 raise Exception.Create(Format(SUndefinedType, [AType.Name, TPDTypeProperty(Items[I]).Name])); 177 176 if RefType.DbType = '' then 178 177 raise Exception.Create(Format(SMissingBaseType, [RefType.Name])); 179 178 180 Query := Query + '`' + Items[I].Key+ '` ' + RefType.DbType + ' NULL,';179 Query := Query + '`' + TPDTypeProperty(Items[I]).Name + '` ' + RefType.DbType + ' NULL,'; 181 180 end; 182 181 Query := Query + 'PRIMARY KEY (`Id`)' + -
PersistentData/Demo
- Property svn:ignore
-
old new 1 1 lib 2 2 Demo 3 Demo.exe
-
- Property svn:ignore
-
PersistentData/Demo/Demo.lps
r361 r362 4 4 <Version Value="9"/> 5 5 <BuildModes Active="Default"/> 6 <Units Count=" 17">6 <Units Count="20"> 7 7 <Unit0> 8 8 <Filename Value="Demo.lpr"/> … … 12 12 <TopLine Value="1"/> 13 13 <CursorPos X="1" Y="1"/> 14 <UsageCount Value="4 2"/>14 <UsageCount Value="45"/> 15 15 <DefaultSyntaxHighlighter Value="Delphi"/> 16 16 </Unit0> … … 25 25 <WindowIndex Value="0"/> 26 26 <TopLine Value="26"/> 27 <CursorPos X=" 62" Y="45"/>28 <UsageCount Value="4 2"/>27 <CursorPos X="40" Y="36"/> 28 <UsageCount Value="45"/> 29 29 <Loaded Value="True"/> 30 30 <LoadedDesigner Value="True"/> … … 37 37 <EditorIndex Value="1"/> 38 38 <WindowIndex Value="0"/> 39 <TopLine Value="3 56"/>40 <CursorPos X="1" Y=" 363"/>41 <UsageCount Value="2 1"/>39 <TopLine Value="34"/> 40 <CursorPos X="1" Y="45"/> 41 <UsageCount Value="22"/> 42 42 <Loaded Value="True"/> 43 43 </Unit2> … … 53 53 <Filename Value="../Backend/UPDClientMySQL.pas"/> 54 54 <UnitName Value="UPDClientMySQL"/> 55 <EditorIndex Value=" 3"/>56 <WindowIndex Value="0"/> 57 <TopLine Value=" 245"/>58 <CursorPos X=" 51" Y="272"/>59 <UsageCount Value="2 1"/>55 <EditorIndex Value="4"/> 56 <WindowIndex Value="0"/> 57 <TopLine Value="155"/> 58 <CursorPos X="3" Y="157"/> 59 <UsageCount Value="22"/> 60 60 <Loaded Value="True"/> 61 61 </Unit4> … … 94 94 <Filename Value="../Backend/UPDClientMemory.pas"/> 95 95 <UnitName Value="UPDClientMemory"/> 96 <EditorIndex Value=" 5"/>97 <WindowIndex Value="0"/> 98 <TopLine Value=" 95"/>99 <CursorPos X="1 8" Y="126"/>100 <UsageCount Value="2 1"/>96 <EditorIndex Value="6"/> 97 <WindowIndex Value="0"/> 98 <TopLine Value="125"/> 99 <CursorPos X="1" Y="145"/> 100 <UsageCount Value="22"/> 101 101 <Loaded Value="True"/> 102 102 </Unit9> … … 112 112 <Filename Value="../UPersistentData.pas"/> 113 113 <UnitName Value="UPersistentData"/> 114 <EditorIndex Value=" 4"/>114 <EditorIndex Value="5"/> 115 115 <WindowIndex Value="0"/> 116 116 <TopLine Value="35"/> 117 117 <CursorPos X="94" Y="52"/> 118 <UsageCount Value="2 0"/>118 <UsageCount Value="21"/> 119 119 <Loaded Value="True"/> 120 120 </Unit11> … … 130 130 <Filename Value="../../Network/CoolWeb/Persistence/USqlDatabase.pas"/> 131 131 <UnitName Value="USqlDatabase"/> 132 <EditorIndex Value=" 2"/>132 <EditorIndex Value="3"/> 133 133 <WindowIndex Value="0"/> 134 134 <TopLine Value="332"/> 135 135 <CursorPos X="20" Y="350"/> 136 <UsageCount Value="2 0"/>136 <UsageCount Value="21"/> 137 137 <Loaded Value="True"/> 138 138 <DefaultSyntaxHighlighter Value="Delphi"/> … … 160 160 <UsageCount Value="10"/> 161 161 </Unit16> 162 <Unit17> 163 <Filename Value="../../Generics/TemplateGenerics/Specialized/SpecializedDictionary.pas"/> 164 <UnitName Value="SpecializedDictionary"/> 165 <EditorIndex Value="2"/> 166 <WindowIndex Value="0"/> 167 <TopLine Value="8"/> 168 <CursorPos X="3" Y="12"/> 169 <UsageCount Value="11"/> 170 <Loaded Value="True"/> 171 </Unit17> 172 <Unit18> 173 <Filename Value="../../Generics/TemplateGenerics/Generic/GenericDictionary.inc"/> 174 <EditorIndex Value="8"/> 175 <WindowIndex Value="0"/> 176 <TopLine Value="13"/> 177 <CursorPos X="25" Y="29"/> 178 <UsageCount Value="11"/> 179 <Loaded Value="True"/> 180 </Unit18> 181 <Unit19> 182 <Filename Value="../../Generics/TemplateGenerics/Generic/GenericList.inc"/> 183 <EditorIndex Value="7"/> 184 <WindowIndex Value="0"/> 185 <TopLine Value="64"/> 186 <CursorPos X="1" Y="1"/> 187 <UsageCount Value="11"/> 188 <Loaded Value="True"/> 189 </Unit19> 162 190 </Units> 163 191 <General> 164 192 <ActiveWindowIndexAtStart Value="0"/> 165 193 </General> 166 <JumpHistory Count="30" HistoryIndex="2 9">194 <JumpHistory Count="30" HistoryIndex="28"> 167 195 <Position1> 168 196 <Filename Value="../UPDClient.pas"/> 169 <Caret Line="3 52" Column="1" TopLine="330"/>197 <Caret Line="370" Column="1" TopLine="357"/> 170 198 </Position1> 171 199 <Position2> 172 <Filename Value="../ UPDClient.pas"/>173 <Caret Line="3 53" Column="1" TopLine="330"/>200 <Filename Value="../../Network/CoolWeb/Persistence/USqlDatabase.pas"/> 201 <Caret Line="349" Column="13" TopLine="332"/> 174 202 </Position2> 175 203 <Position3> 176 <Filename Value="../ UPersistentData.pas"/>177 <Caret Line=" 53" Column="1" TopLine="35"/>204 <Filename Value="../Backend/UPDClientMySQL.pas"/> 205 <Caret Line="74" Column="1" TopLine="56"/> 178 206 </Position3> 179 207 <Position4> 180 <Filename Value="../ UPersistentData.pas"/>181 <Caret Line=" 54" Column="1" TopLine="35"/>208 <Filename Value="../../Network/CoolWeb/Persistence/USqlDatabase.pas"/> 209 <Caret Line="350" Column="1" TopLine="332"/> 182 210 </Position4> 183 211 <Position5> 184 <Filename Value="../ UPersistentData.pas"/>185 <Caret Line=" 52" Column="1" TopLine="35"/>212 <Filename Value="../Backend/UPDClientMySQL.pas"/> 213 <Caret Line="74" Column="1" TopLine="56"/> 186 214 </Position5> 187 215 <Position6> 188 <Filename Value=" UFormMain.pas"/>189 <Caret Line="2 1" Column="23" TopLine="1"/>216 <Filename Value="../Backend/UPDClientMySQL.pas"/> 217 <Caret Line="272" Column="51" TopLine="245"/> 190 218 </Position6> 191 219 <Position7> 192 <Filename Value=" UFormMain.pas"/>193 <Caret Line="2 2" Column="23" TopLine="1"/>220 <Filename Value="../Backend/UPDClientMemory.pas"/> 221 <Caret Line="21" Column="35" TopLine="8"/> 194 222 </Position7> 195 223 <Position8> 196 <Filename Value=" UFormMain.pas"/>197 <Caret Line=" 21" Column="23" TopLine="1"/>224 <Filename Value="../Backend/UPDClientMySQL.pas"/> 225 <Caret Line="53" Column="1" TopLine="43"/> 198 226 </Position8> 199 227 <Position9> 200 <Filename Value=" UFormMain.pas"/>201 <Caret Line=" 23" Column="23" TopLine="1"/>228 <Filename Value="../Backend/UPDClientMemory.pas"/> 229 <Caret Line="58" Column="49" TopLine="45"/> 202 230 </Position9> 203 231 <Position10> 204 <Filename Value=" UFormMain.pas"/>205 <Caret Line=" 25" Column="23" TopLine="1"/>232 <Filename Value="../Backend/UPDClientMemory.pas"/> 233 <Caret Line="39" Column="3" TopLine="21"/> 206 234 </Position10> 207 235 <Position11> 208 <Filename Value=" UFormMain.pas"/>209 <Caret Line=" 48" Column="18" TopLine="17"/>236 <Filename Value="../Backend/UPDClientMemory.pas"/> 237 <Caret Line="61" Column="14" TopLine="49"/> 210 238 </Position11> 211 239 <Position12> 212 <Filename Value="../ UPDClient.pas"/>213 <Caret Line=" 115" Column="70" TopLine="90"/>240 <Filename Value="../Backend/UPDClientMemory.pas"/> 241 <Caret Line="67" Column="37" TopLine="54"/> 214 242 </Position12> 215 243 <Position13> 216 <Filename Value="../ UPDClient.pas"/>217 <Caret Line=" 259" Column="42" TopLine="257"/>244 <Filename Value="../Backend/UPDClientMemory.pas"/> 245 <Caret Line="59" Column="38" TopLine="46"/> 218 246 </Position13> 219 247 <Position14> 220 <Filename Value=" UFormMain.pas"/>221 <Caret Line="3 9" Column="39" TopLine="17"/>248 <Filename Value="../UPDClient.pas"/> 249 <Caret Line="34" Column="44" TopLine="13"/> 222 250 </Position14> 223 251 <Position15> 224 <Filename Value=" UFormMain.pas"/>225 <Caret Line=" 51" Column="19" TopLine="19"/>252 <Filename Value="../Backend/UPDClientMemory.pas"/> 253 <Caret Line="20" Column="28" TopLine="9"/> 226 254 </Position15> 227 255 <Position16> 228 <Filename Value=" UFormMain.pas"/>229 <Caret Line=" 57" Column="86" TopLine="25"/>256 <Filename Value="../Backend/UPDClientMemory.pas"/> 257 <Caret Line="21" Column="52" TopLine="10"/> 230 258 </Position16> 231 259 <Position17> 232 <Filename Value=" UFormMain.pas"/>233 <Caret Line=" 56" Column="1" TopLine="26"/>260 <Filename Value="../Backend/UPDClientMemory.pas"/> 261 <Caret Line="82" Column="1" TopLine="79"/> 234 262 </Position17> 235 263 <Position18> 236 <Filename Value=" UFormMain.pas"/>237 <Caret Line=" 57" Column="1" TopLine="26"/>264 <Filename Value="../Backend/UPDClientMemory.pas"/> 265 <Caret Line="74" Column="37" TopLine="61"/> 238 266 </Position18> 239 267 <Position19> 240 <Filename Value=" UFormMain.pas"/>241 <Caret Line=" 45" Column="49" TopLine="26"/>268 <Filename Value="../Backend/UPDClientMemory.pas"/> 269 <Caret Line="81" Column="20" TopLine="68"/> 242 270 </Position19> 243 271 <Position20> 244 <Filename Value="../ UPDClient.pas"/>245 <Caret Line=" 385" Column="14" TopLine="358"/>272 <Filename Value="../Backend/UPDClientMemory.pas"/> 273 <Caret Line="99" Column="63" TopLine="86"/> 246 274 </Position20> 247 275 <Position21> 248 <Filename Value=" UFormMain.pas"/>249 <Caret Line=" 56" Column="20" TopLine="26"/>276 <Filename Value="../Backend/UPDClientMemory.pas"/> 277 <Caret Line="128" Column="15" TopLine="112"/> 250 278 </Position21> 251 279 <Position22> 252 <Filename Value=" UFormMain.pas"/>253 <Caret Line=" 57" Column="20" TopLine="27"/>280 <Filename Value="../Backend/UPDClientMemory.pas"/> 281 <Caret Line="83" Column="3" TopLine="79"/> 254 282 </Position22> 255 283 <Position23> 256 <Filename Value=" UFormMain.pas"/>257 <Caret Line=" 56" Column="20" TopLine="26"/>284 <Filename Value="../Backend/UPDClientMemory.pas"/> 285 <Caret Line="121" Column="3" TopLine="113"/> 258 286 </Position23> 259 287 <Position24> 260 <Filename Value=" UFormMain.pas"/>261 <Caret Line=" 45" Column="62" TopLine="26"/>288 <Filename Value="../Backend/UPDClientMemory.pas"/> 289 <Caret Line="128" Column="24" TopLine="113"/> 262 290 </Position24> 263 291 <Position25> 264 <Filename Value="../ UPDClient.pas"/>265 <Caret Line=" 370" Column="1" TopLine="357"/>292 <Filename Value="../Backend/UPDClientMemory.pas"/> 293 <Caret Line="129" Column="54" TopLine="112"/> 266 294 </Position25> 267 295 <Position26> 268 <Filename Value="../ ../Network/CoolWeb/Persistence/USqlDatabase.pas"/>269 <Caret Line=" 349" Column="13" TopLine="332"/>296 <Filename Value="../Backend/UPDClientMemory.pas"/> 297 <Caret Line="128" Column="66" TopLine="115"/> 270 298 </Position26> 271 299 <Position27> 272 <Filename Value="../ Backend/UPDClientMySQL.pas"/>273 <Caret Line=" 74" Column="1" TopLine="56"/>300 <Filename Value="../UPDClient.pas"/> 301 <Caret Line="25" Column="5" TopLine="12"/> 274 302 </Position27> 275 303 <Position28> 276 <Filename Value="../ ../Network/CoolWeb/Persistence/USqlDatabase.pas"/>277 <Caret Line=" 350" Column="1" TopLine="332"/>304 <Filename Value="../Backend/UPDClientMemory.pas"/> 305 <Caret Line="128" Column="75" TopLine="115"/> 278 306 </Position28> 279 307 <Position29> 280 <Filename Value="../ Backend/UPDClientMySQL.pas"/>281 <Caret Line=" 74" Column="1" TopLine="56"/>308 <Filename Value="../UPDClient.pas"/> 309 <Caret Line="47" Column="17" TopLine="33"/> 282 310 </Position29> 283 311 <Position30> 284 <Filename Value="../ Backend/UPDClientMySQL.pas"/>285 <Caret Line=" 272" Column="51" TopLine="245"/>312 <Filename Value="../UPDClient.pas"/> 313 <Caret Line="456" Column="1" TopLine="431"/> 286 314 </Position30> 287 315 </JumpHistory> -
PersistentData/PersistentData.lpk
r361 r362 56 56 </Item6> 57 57 <Item7> 58 <Filename Value="Backend\UPDClientMemory.pas"/> 59 <UnitName Value="UPDClientMemory"/> 60 </Item7> 61 <Item8> 58 62 <Filename Value="UPersistentData.pas"/> 59 63 <HasRegisterProc Value="True"/> 60 64 <UnitName Value="UPersistentData"/> 61 </Item7>62 <Item8>63 <Filename Value="Backend\UPDClientMemory.pas"/>64 <UnitName Value="UPDClientMemory"/>65 65 </Item8> 66 66 </Files> -
PersistentData/PersistentData.pas
r361 r362 9 9 uses 10 10 UPDServer, UPDClient, UPDClientXMLRPC, UPDClientINI, UPDClientMySQL, 11 UPDClientRegistry, UP ersistentData, UPDClientMemory, LazarusPackageIntf;11 UPDClientRegistry, UPDClientMemory, UPersistentData, LazarusPackageIntf; 12 12 13 13 implementation -
PersistentData/UPDClient.pas
r361 r362 15 15 16 16 TPDClient = class; 17 TPDType = class; 17 18 18 19 TOrderDirection = (odNone, odAscending, odDescending); … … 31 32 constructor Create; 32 33 destructor Destroy; override; 34 procedure Assign(Source: TObjectProxy); 35 end; 36 37 TOperation = (opUndefined, opDefined, opEqual, opNotEqual, 38 opLess, opMore, opLessOrEqual, opMoreOrEqual); 39 40 TCondition = class 41 Column: string; 42 Operation: TOperation; 43 Value: string; 33 44 end; 34 45 … … 56 67 end; 57 68 69 TPDTypeProperty = class 70 Name: string; 71 DbType: TPDType; 72 Unique: Boolean; 73 Index: Boolean; 74 end; 75 76 { TPDTypePropertyList } 77 78 TPDTypePropertyList = class(TListObject) 79 Client: TPDClient; 80 procedure AddSimple(Name: string; TypeName: string; Unique: Boolean = False; 81 Index: Boolean = False); 82 end; 83 58 84 { TPDType } 59 85 60 86 TPDType = class 61 Client: TPDClient; 87 private 88 FClient: TPDClient; 89 procedure SetClient(AValue: TPDClient); 90 public 62 91 Name: string; 63 92 DbType: string; 64 Properties: T DictionaryStringString;93 Properties: TPDTypePropertyList; 65 94 function IsDefined: Boolean; 66 95 procedure Define; … … 68 97 constructor Create; 69 98 destructor Destroy; override; 99 property Client: TPDClient read FClient write SetClient; 70 100 end; 71 101 … … 103 133 procedure TypeUndefine(AType: TPDType); virtual; abstract; 104 134 procedure CheckTypes; 105 function TypeExists(Name: string): Boolean; virtual; abstract;106 135 constructor Create(AOwner: TComponent); override; 107 136 destructor Destroy; override; … … 120 149 TPDClientClass = class of TPDClient; 121 150 151 resourcestring 152 SClientNotSet = 'Client not set'; 153 SNotSupported = 'Not supported'; 154 SVersionMismatch = 'Version mismatch, client: %0:s, server: %1:s. Please upgrade database.'; 155 SCantLoadObjectWithoutId = 'Can''t load object without id'; 156 157 122 158 implementation 123 159 124 resourcestring 125 SClientNotSet = 'Client not set'; 126 SNotSupported = 'Not supported'; 127 SVersionMismatch = 'Version mismatch, client: %0:s, server: %1:s. Please upgrade database.'; 160 { TPDTypePropertyList } 161 162 procedure TPDTypePropertyList.AddSimple(Name: string; TypeName: string; 163 Unique: Boolean; Index: Boolean); 164 var 165 NewProperty: TPDTypeProperty; 166 begin 167 NewProperty := TPDTypeProperty(AddNew(TPDTypeProperty.Create)); 168 NewProperty.Name := Name; 169 NewProperty.DbType := Client.Types.SearchByName(TypeName); 170 NewProperty.Unique := Unique; 171 NewProperty.Index := Index; 172 end; 128 173 129 174 … … 148 193 end; 149 194 195 procedure TPDType.SetClient(AValue: TPDClient); 196 begin 197 if FClient = AValue then Exit; 198 FClient := AValue; 199 Properties.Client := AValue; 200 end; 201 150 202 function TPDType.IsDefined: Boolean; 151 203 begin … … 168 220 constructor TPDType.Create; 169 221 begin 170 Properties := T DictionaryStringString.Create;222 Properties := TPDTypePropertyList.Create; 171 223 end; 172 224 … … 206 258 Properties.Free; 207 259 inherited Destroy; 260 end; 261 262 procedure TObjectProxy.Assign(Source: TObjectProxy); 263 begin 264 Path := Source.Path; 265 Client := Source.Client; 266 ObjectName := Source.ObjectName; 267 Id := Source.Id; 268 Properties.Assign(Source.Properties); 208 269 end; 209 270 … … 293 354 NewType.Client := Self; 294 355 NewType.Name := SystemVersionObject; 295 NewType.Properties.Add ('Version', 'String');296 NewType.Properties.Add ('Time', 'DateTime');356 NewType.Properties.AddSimple('Version', 'String'); 357 NewType.Properties.AddSimple('Time', 'DateTime'); 297 358 NewType.Define; 298 359 … … 380 441 procedure TPDClient.Uninstall; 381 442 begin 382 443 //Types.Uninstall; 383 444 end; 384 445
Note:
See TracChangeset
for help on using the changeset viewer.