Bonjour, j'ai crée une class dérivé de tlist sa fonctionne mais a la sortie delphi me dis (j'utilise ReportMemoryLeaksOnShutDown := true:
Si je clique 2 fois sa passe à x2 etc.Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:
13 - 20 bytes: Unknown x 1
Dans memproof sa n'apparait pas et en pas à pas je vois que ma liste et mon item est libéré j'arrive pas à comprendre. merci d'avance pour votre aide
appel exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Unit GameServerDetails; Interface Uses Windows, Messages, SysUtils, Variants, Classes; Type TGameServerRulesDetails = Class Private FName, FValue: String; Public Constructor Create(Name, Value: String); Property Name: String Read FName; Property Value: String Read FValue; End; TGameServerRulesList = Class(TList) Private Function GetItem(Idx: Integer): TGameServerRulesDetails; Public Destructor Destroy; Override; Function Add(RulesDetails: TGameServerRulesDetails): Integer; Function AddRulesDetails(Name, Value: String): Integer; Function IndexOf(RulesDetails: TGameServerRulesDetails): Integer; Procedure Clear; Override; Procedure Insert(Index: Integer; RulesDetails: TGameServerRulesDetails); Procedure Delete(Index: Integer); Property Items[Idx: Integer]: TGameServerRulesDetails Read GetItem; End; End; Implementation { TGameServerRulesDetails } Constructor TGameServerRulesDetails.Create(Name, Value: String); Begin FName := Name; FValue := Value; End; { TGameServerRulesList } Function TGameServerRulesList.Add( RulesDetails: TGameServerRulesDetails): Integer; Begin Result := Inherited Add(RulesDetails); End; Function TGameServerRulesList.AddRulesDetails(Name, Value: String): Integer; Var RulesDetails: TGameServerRulesDetails; Begin RulesDetails := TGameServerRulesDetails.Create(Name, Value); Result := Add(RulesDetails); End; Procedure TGameServerRulesList.Clear; Begin While Inherited Count > 0 Do Delete(0); End; Procedure TGameServerRulesList.Delete(Index: Integer); Begin If Index In [0..Count - 1] Then Begin Items[Index].Free; Inherited Delete(Index); End; End; Destructor TGameServerRulesList.Destroy; Begin Try Clear; Finally Inherited Destroy; End; End; Function TGameServerRulesList.GetItem(Idx: Integer): TGameServerRulesDetails; Begin Result := TGameServerRulesDetails(Inherited Items[Idx]); End; Function TGameServerRulesList.IndexOf( RulesDetails: TGameServerRulesDetails): Integer; Begin Result := 0; While (Result < Count) And ( (Items[Result].FName <> RulesDetails.Name) And (Items[Result].FValue <> RulesDetails.Value) ) Do Inc(Result); If Result = Count Then Result := -1; End; Procedure TGameServerRulesList.Insert(Index: Integer; RulesDetails: TGameServerRulesDetails); Begin Inherited Insert(Index, RulesDetails); End; End.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Procedure TForm1.Button1Click(Sender: TObject); Var t: TGameServerRulesList; Begin t := TGameServerRulesList.Create; t.AddRulesDetails('t', '0'); t.Free; End;
Partager