Bonjour à tous,
Je suis devant un problème que je n'arrive pas à résoudre depuis plus d'une semaine.
Dans mon projet, (d'avoir un TBitmap indépendant de FPC et Lazarus à sa base), j'ai décidé de changer la classe qui servait au chargement des données par une classe descendante de TStream pour plus de confort et d'esthétique dans le code.
Jusque là pas trop de soucis je charge sans problème les fichiers BMP 32bits
* A Gauche TBitmap, a droite ma solution "TGLZBitmap"
Mais lorsque je veux charger des fichiers BMP 24bits
A Gauche le fichier 24Bit, A droite le fichier 32Bits afficher par dessus avec la transparence
Elles sont passées ou mes données ????
Voilà le code (version courte) de la Classe dérivée de TStream
Désolé pour les logs posés comme un bourrin
Ensuite le code qui charge les données et les décode (24 et 32bits)
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
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
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270 uses Classes, SysUtils; Const DefaultBufferedStreamBlockSize = 1024*64; // par défaut tampon de 64Mo, 64ko pour tester type { : TGLZCustomBufferedStream aide à la lecture et ou ecriture de données dans un flux (TStream). L'acces se fait par le biais d'un tampon de taille définie. L'acces aux données est un acces directe en mémoire et se fait de façon séquentielle. Cette classe ameliore surtout les performances d'accès aux données de fichiers physique. Ne pas employer directement TGLZCustomBufferedStream. Utilsez la classe TGLZBufferedStream et les autres classes descendantes. } TGLZCustomBufferedStream = class(TStream) private procedure LoadBuffer; virtual;//(var Buf; BufSize: integer) : integer; virtual; protected Stream : TStream; // Les données que l'on veux exploiter StreamSize : Int64; // La taille des données du stream StreamPosition: Int64; // Position dans le stream AutoFreeStream : Boolean; //Indicateur si l'on doit libérer le stream ou pas StreamViewStart, StreamViewEnd, StreamViewLength : Int64; // position et longueur du tampon dans le stream //StreamViewStartPtr, FStreamViewEndPtr : PByte; // pointe directement sur le debut ou la fin peut-être utile dans certain cas (lecture depuis la fin par ex) StreamBytesLeft : Int64; // Nombre d'octet qui reste à lire StreamBytesRead : Int64; // Nombre d'octet deja lu (égual à FStreamPosition+1) Buffer: Pointer; //PByte; // Tampon mémoire pour l'acces au donnée par bloque BufferDefaultSize: Int64; // Taille du tampon par defaut BufferSize: Int64; // Taille réelle du tampon BufferPosition : Int64; // Position dans le tampon BufferBytesRead, BufferBytesWrite : Int64; // Nombre d'octet deja lu ou écrit dans le tampon BufferBytesLeft : Int64; // Nombre d'octet qui reste à lire dans le tampon FUseAlignedCache: Boolean; // On aligne la taille du tampon sur 32bit (accélère les échanges mémoire dans certain cas) StrideSize : Byte; //Taille en octet à ajouté à la fin du tampon pour l'alignement des données procedure SetSize(const NewSize: Int64); override; public constructor Create(Const aBlockSize: Integer = DefaultBufferedStreamBlockSize); constructor Create(AStream : TStream; const aBlockSize : integer = DefaultBufferedStreamBlockSize); overload; destructor Destroy; override; procedure AssignBuffer(aBuffer:Pointer; aSize:Longint); procedure AssignStream(aStream:TStream); procedure Flush; function Read(var aBuffer; Count: Longint): Longint; override; function Write(const aBuffer; Count: Longint): Longint; override; function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override; { Routines de lecture et de déplacement dans le tampon } function ReadByte:Byte; inline; procedure SkipNextByte(Const aCount:Integer=1); inline; procedure GotoPreviousByte; inline; procedure GotoNextStringLine; inline; function ReadWord:Word; function ReadInteger:Integer; //ect.... { Clear : Efface les données en les mettant à ZERO } procedure Clear; { GetBuffer : Renvoie le tampon brute de pomme } function GetBuffer:Pointer; { GetBufferAsString : Renvoie le tampon sous la forme d'une chaine de caractère /!\ Max 64Mo ou la taille que vous aurez définit à la creation de TGLZBufferdStream } function GetBufferAsString:String; Inline; // Renvoie la taille total des données du Stream property Size: Int64 read StreamSize; end; TGLZCustomBufferedStreamClass = class of TGLZCustomBufferedStream; { : voir TGLZCustomBufferedStream pour informations } TGLZBufferedStream = class(TGLZCustomBufferedStream); implementation uses GLZLogger; {%region%=====[ TGLZCustomBufferedStream ]=====================================} constructor TGLZCustomBufferedStream.Create(Const aBlockSize: Integer = DefaultBufferedStreamBlockSize); begin inherited Create; GlobalLogger.LogNotice('TGLZCustomBufferedStream.Create' ); GlobalLogger.LogNotice('Taille du tampon par defaut : BufferDefaultSize = '+IntToStr(aBlockSize)); Buffer:=nil; BufferDefaultSize := aBlockSize; BufferSize:=BufferDefaultSize; BufferBytesRead := 0; BufferBytesLeft := 0; BufferPosition := 0; Stream := nil; StreamSize := BufferSize; StreamPosition := 0; StreamViewStart := 0; StreamViewEnd := 0; StreamViewLength := 0; AutoFreeStream := False; StreamBytesLeft := 0; StreamBytesRead := 0; end; constructor TGLZCustomBufferedStream.Create(AStream : TStream; const aBlockSize : integer = DefaultBufferedStreamBlockSize); begin GlobalLogger.LogNotice('TGLZCustomBufferedStream.Create depuis TStream' ); Create(aBlockSize); Stream := AStream; StreamSize := AStream.Size; GlobalLogger.LogNotice('Taille du Stream : StreamSize = '+IntToStr(StreamSize)); StreamPosition := 0; StreamViewStart := 0; StreamViewEnd := 0; StreamViewLength := 0; AutoFreeStream := False; StreamBytesLeft := StreamSize; StreamBytesRead := 0; end; destructor TGLZCustomBufferedStream.Destroy; begin GlobalLogger.LogNotice('TGLZCustomBufferedStream.Destroy' ); if AutoFreeStream then FreeAndNil(Stream); //FreeAndNil(Buffer); ReAllocMem(Buffer, 0); FreeMem(Buffer); Buffer:=nil; inherited Destroy; end; procedure TGLZCustomBufferedStream.Flush; begin GlobalLogger.LogNotice('Vide et reinitialise le tampon à la position : '+inttostr(BufferPosition)); // Clear; ---> Aucun chargement dans le buffer apres, ecran noir !!!! Est ce que FillByte deplace la position du pointer ??? StreamViewStart := BufferPosition; StreamBytesLeft:=StreamSize-BufferPosition; BufferSize:=BufferDefaultSize; BufferBytesRead := 0; BufferBytesLeft := 0; BufferPosition := 0; end; procedure TGLZCustomBufferedStream.LoadBuffer; var SeekResult: Integer; RSize:Longint; begin GlobalLogger.LogNotice('TGLZCustomBufferedStream.LoadBuffer' ); GlobalLogger.LogStatus('Reste dans le stream : StreamBytesLeft = '+inttostr(StreamBytesLeft)); // C'est la 1er fois ? on initialise le tampon if not(Assigned(Buffer)) then SetSize(BufferDefaultSize); // Fin des données, plus rien à lire, on remet tout a zero et on s'en va if (StreamViewStart>=StreamSize) or (StreamBytesLeft<=0) then begin GlobalLogger.LogNotice('TGLZCustomBufferedStream.LoadBuffer : Fin des données atteinte' ); BufferPosition:=0; BufferBytesRead := 0; BufferBytesLeft := 0; StreamViewLength:=0; StreamBytesLeft:=0; //EndOfStream : boolean = true; exit; end; GlobalLogger.LogNotice('Deplacement dans le stream : StreamViewStart = '+IntToStr(StreamViewStart)); // On se place sous la bonne fenètre SeekResult := Stream.Seek(StreamViewStart, soBeginning); if SeekResult = -1 then raise EStreamError.Create('TGLZCustomBufferedStream.LoadBuffer: Erreur lors du positionnement dans le flux'); if (StreamBytesLeft<BufferDefaultSize) then Rsize:= StreamBytesLeft else RSize:=BufferDefaultSize; // On lit les données, et on transfert dans le tampon BufferSize := Stream.Read(Buffer^,RSize); if BufferSize <= 0 then raise EStreamError.Create('TGLZCustomBufferedStream.LoadBuffer: Erreur lors de la Lecture du flux'); GlobalLogger.LogNotice('Données copiées depuis stream vers le tampon : BufferSize = '+IntToStr(BufferSize)); // On met à jour les marqueurs de la "fenêtre" de lecture du Stream pour le chargement StreamPosition:=StreamViewStart; StreamViewLength:=BufferSize; StreamViewEnd := StreamViewStart + StreamViewLength-1; if StreamViewEnd > StreamSize then raise EStreamError.Create('TGLZCustomBufferedStream.LoadBuffer: Index StreamViewEnd hors limite'); Dec(StreamBytesLeft,BufferSize); Inc(StreamBytesRead,BufferSize); GlobalLogger.LogStatus('Reste dans le stream : StreamBytesLeft = '+inttostr(StreamBytesLeft)); // On reinitialise les marqueurs du Buffer BufferPosition:=0; BufferBytesRead := 0; BufferBytesLeft := BufferSize; GlobalLogger.LogStatus('StreamViewLength = '+inttostr(StreamViewLength)); GlobalLogger.LogStatus('StreamViewEnd = '+inttostr(StreamViewEnd)); end; procedure TGLZCustomBufferedStream.SetSize(const NewSize: Int64); begin GlobalLogger.LogNotice('Initialisation du tampon : BufferSize = '+IntToStr(NewSize)); ReAllocMem(Buffer, NewSize); BufferSize:=NewSize; BufferPosition:=0; BufferBytesRead:=0; BufferBytesWrite :=0; BufferBytesLeft:=NewSize; end; function TGLZCustomBufferedStream.Read(var aBuffer; Count: Longint): Longint; var diff:Longint; begin Result:=0; GlobalLogger.Log('----------------------------------------------------------------------'); GlobalLogger.LogNotice('TGLZCustomBufferedStream.Read' ); GlobalLogger.LogStatus('Reste dans le tampon : BufferBytesLeft = '+inttostr(BufferBytesLeft)); // Il n'y a plus de données à lire dans le Tampon et le Stream //if (StreamBytesLeft<=0) and (BufferBytesLeft<=0) then exit; // Il n'y a plus de données à lire dans le Tampon if (BufferBytesLeft<=0) then begin GlobalLogger.LogNotice('Fin du Tampon atteinte ou 1ere fois'); GlobalLogger.LogStatus('Position dans le stream : StreamViewStart = '+inttostr(StreamViewStart)); GlobalLogger.LogStatus('Position dans le Tampon : BufferPosition = '+inttostr(BufferPosition)); StreamViewStart:=StreamViewStart+BufferPosition; GlobalLogger.LogStatus('Nouvelle Position dans le stream : StreamViewStart = '+inttostr(StreamViewStart)); GlobalLogger.LogStatus('Loading Stream Buffer : '+inttostr(BufferSize)); LoadBuffer; // On charge un nouveau tampon depuis le stream end else // Il n'y a pas assez de donnée restante à lire dans le tampon If (BufferBytesLeft<Count) then begin GlobalLogger.LogNotice('Pas assez de données dans le tampon, reste BufferBytesLeft = '+inttostr(BufferBytesLeft)); GlobalLogger.LogNotice(' Nombre d''octets à lire : Count = '+inttostr(Count)); GlobalLogger.LogStatus(' Position dans le Tampon : BufferPosition = '+inttostr(BufferPosition)); diff := Count-BufferBytesLeft; GlobalLogger.LogStatus(' Différence = '+inttostr(Diff)); GlobalLogger.LogStatus(' Position dans le stream : StreamViewStart = '+inttostr(StreamViewStart)); Inc(StreamBytesLeft,Diff); StreamViewStart:=StreamViewStart+BufferPosition; GlobalLogger.LogStatus('Nouvelle Position dans le stream : StreamViewStart = '+inttostr(StreamViewStart)); //StreamBytesLeft:=StreamSize-StreamViewStart+1; //StreamBytesRead:=StreamViewStart-1; LoadBuffer; end; // else // Il reste suffisamment de données à lire, If (BufferBytesLeft>=0) and (BufferPosition<BufferSize) and (BufferPosition>=0) then begin GlobalLogger.LogStatus('Lecture du tampon à la position = '+inttostr(BufferPosition)+' Count = '+inttostr(Count)); Result:=Count; // On copie les données Move((Buffer+BufferPosition)^,aBuffer, result); // On met à jour les marqueur de notre tampon Inc(BufferPosition,Result); Inc(BufferBytesRead,Result); Dec(BufferBytesLeft,Result); GlobalLogger.LogStatus('Reste dans le tampon apres lecture : BufferBytesLeft = '+inttostr(BufferBytesLeft)); end; end;
*L'objet "Memory" est le TGLZBufferedStream
Ensuite j'ai vérifiés avec les logs générés mais je ne vois rien. sauf sur la fin. Mais je n'arrive pas à trouver mon erreur.
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 procedure TGLZBitmapBMPImage.LoadFromMemory(); var YY,Y : Integer; X:Integer; DstColor: TGLZColor; SrcPtr : PLongWord; SrcPtr16 : PWord; SrcPtr24 : PGLZColorBGR_24; DstLine : PGLZColor; SrcColor :LongWord; SrcColor16 :Word; SrcColor24:TGLZColorBGR_24; LineBuffer : PByte; //https://en.wikipedia.org/wiki/File:BitfieldsSLN.png begin FIgnoreAlpha:=true; // On initialise les dimensions de notre bitmap SetSize(bmpWidth, bmpHeight); Case RawImage.Description.PixelFormat of pf24Bits: // Pas de compression sauf si en-tête OS2x V2 alors compresion RLE. Formats couleurs suivant "BitField" sinon BGR begin If (FHeaderType = bmpht_OS22x) and (Compression = BMP_COMPRESSION_JPEG) then begin end else begin GlobalLogger.LogNotice('--> Decode Image Data = '+inttostr(MaxWidth)+'x'+IntToStr(MaxHeight)); LineBuffer:=nil; ReallocMem(LineBuffer,FRowSize); Try Memory.Flush; Y:=0; repeat Memory.Read(LineBuffer^,FRowSize); if TopDown then YY:=Y else YY:=MaxHeight-Y; //LineDecodeBGR24(LineBuffer,YY,((Compression = BMP_COMPRESSION_BITF) and (FHeaderType > bmpht_WindowsV1))); DstLine:=GetScanLine(YY); SrcPtr24 := PGLZColorBGR_24(LineBuffer); For X:=0 to MaxWidth do begin SrcColor24:=PGLZColorBGR_24(SrcPtr24+X)^; DstColor.Red := SrcColor24.Red; DstColor.Green := SrcColor24.Green; DstColor.Blue := SrcColor24.Blue; DstColor.Alpha:=255; DstLine^:=DstColor; //Inc(SrcPtr24); Inc(DstLine); end; Inc(Y); Until (Y>MaxHeight); Finally ReAllocMem(LineBuffer, 0); FreeMem(LineBuffer); LineBuffer:=nil; end; end; end; pf32Bits: // Pas de compression, formats couleurs suivant "BitField" sinon format couleur par defaut BGRA begin LineBuffer:=nil; ReallocMem(LineBuffer,FRowSize); Try Memory.Flush; Y:=0; //DstColor.Alpha:= 255; repeat Memory.Read(LineBuffer^,FRowSize); if TopDown then YY:=Y else YY:=MaxHeight-Y; DstLine:=GetScanLine(YY); SrcPtr := PLongWord(LineBuffer); For X:=0 to MaxWidth do begin SrcColor:=SrcPtr^; DstColor := ConvertBitFieldsToGLZColor(RawImage.Description.BitFields, SrcColor); FIgnoreAlpha := FIgnoreAlpha and (DstColor.alpha = 0); DstLine^:= DstColor; Inc(SrcPtr); Inc(DstLine); end; Inc(Y); Until (Y>MaxHeight); Finally //FreeAndNil(LineBuffer) provoque un SIGSEGV que je ne comprend pas ReAllocMem(LineBuffer, 0); FreeMem(LineBuffer); LineBuffer:=nil; end; // Dans le cas ou tous les pixels sont transparent If FIgnoreAlpha then begin GLobalLogger.Log('NO ALPHA SUPPORT = OPAQUE'); RawImage.Description.HasAlpha:=False; With RawImage.Description.BitFields do begin AlphaSize:=0; end; end else PreMultiplyAlpha; end; end; end;
Les deux fichiers BMP sont de dimension 512x512. les données sont donc alignées par rapport au Tampon, donc pas de coupure dans les lignes lorsqu'elle sont lues grâce au Memory.Flush.
Sans Memory.Flush le résultat est le même crash avec le 24bit.
extrait du log du fichier 32Bit
Le log du fichier 24bit
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
109
110
111
112 [STATUS] [ 21/06/2017 16:20:34 ] Start Logging project2_32-i386.exe [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Create depuis TStream [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Create [NOTICE] [ 16:20:58 ] Taille du tampon par defaut : BufferDefaultSize = 65536 [NOTICE] [ 16:20:58 ] Taille du Stream : StreamSize = 1048646 ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 0 [NOTICE] [ 16:20:58 ] Fin du Tampon atteinte ou 1ere fois [STATUS] Position dans le stream : StreamViewStart = 0 [STATUS] Position dans le Tampon : BufferPosition = 0 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 0 [STATUS] Loading Stream Buffer : 65536 [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 1048646 [NOTICE] [ 16:20:58 ] Initialisation du tampon : BufferSize = 65536 [NOTICE] [ 16:20:58 ] Deplacement dans le stream : StreamViewStart = 0 [NOTICE] [ 16:20:58 ] Données copiées depuis stream vers le tampon : BufferSize = 65536 [STATUS] Reste dans le stream : StreamBytesLeft = 983110 [STATUS] StreamViewLength = 65536 [STATUS] StreamViewEnd = 65535 [STATUS] Lecture du tampon à la position = 0 Count = 14 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 65522 ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 65518 [STATUS] Lecture du tampon à la position = 18 Count = 52 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 65466 [STATUS] gapSize1 = 0 [STATUS] Read BitCount = 32 [STATUS] Compression = BitField [STATUS] BitCount = 32 [STATUS] Red Shift = 24 [STATUS] Green Shift = 16 [STATUS] Blue Shift = 8 [STATUS] Alpha Shift = 0 [STATUS] Red Size = 8 [STATUS] Green Size = 8 [STATUS] Blue Size = 8 [STATUS] Alpha Size = 8 [STATUS] BitFields Size = 16 [NOTICE] [ 16:20:58 ] Vide et reinitialise le tampon à la position : 70 ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 0 [NOTICE] [ 16:20:58 ] Fin du Tampon atteinte ou 1ere fois [STATUS] Position dans le stream : StreamViewStart = 70 [STATUS] Position dans le Tampon : BufferPosition = 0 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 70 [STATUS] Loading Stream Buffer : 65536 [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 1048576 [NOTICE] [ 16:20:58 ] Deplacement dans le stream : StreamViewStart = 70 [NOTICE] [ 16:20:58 ] Données copiées depuis stream vers le tampon : BufferSize = 65536 [STATUS] Reste dans le stream : StreamBytesLeft = 983040 [STATUS] StreamViewLength = 65536 [STATUS] StreamViewEnd = 65605 [STATUS] Lecture du tampon à la position = 0 Count = 2048 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 63488 ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 63488 [STATUS] Lecture du tampon à la position = 2048 Count = 2048 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 61440 ---------------------------------------------------------------------- ... ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 2048 [STATUS] Lecture du tampon à la position = 63488 Count = 2048 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 0 ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 0 [NOTICE] [ 16:20:58 ] Fin du Tampon atteinte ou 1ere fois [STATUS] Position dans le stream : StreamViewStart = 917574 [STATUS] Position dans le Tampon : BufferPosition = 65536 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 983110 [STATUS] Loading Stream Buffer : 65536 [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 65536 [NOTICE] [ 16:20:58 ] Deplacement dans le stream : StreamViewStart = 983110 [NOTICE] [ 16:20:58 ] Données copiées depuis stream vers le tampon : BufferSize = 65536 [STATUS] Reste dans le stream : StreamBytesLeft = 0 [STATUS] StreamViewLength = 65536 [STATUS] StreamViewEnd = 1048645 [STATUS] Lecture du tampon à la position = 0 Count = 2048 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 63488 ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 63488 [STATUS] Lecture du tampon à la position = 2048 Count = 2048 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 61440 ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 61440 [STATUS] Lecture du tampon à la position = 4096 Count = 2048 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 59392 ---------------------------------------------------------------------- ... ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 4096 [STATUS] Lecture du tampon à la position = 61440 Count = 2048 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 2048 ---------------------------------------------------------------------- [NOTICE] [ 16:20:58 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 2048 [STATUS] Lecture du tampon à la position = 63488 Count = 2048 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 0
Vous auriez une idée, ou sont passé ces données ?
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
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 [STATUS] [ 21/06/2017 16:22:48 ] Start Logging project2_32-i386.exe [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Create depuis TStream [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Create [NOTICE] [ 16:23:23 ] Taille du tampon par defaut : BufferDefaultSize = 65536 [NOTICE] [ 16:23:23 ] Taille du Stream : StreamSize = 786486 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 0 [NOTICE] [ 16:23:23 ] Fin du Tampon atteinte ou 1ere fois [STATUS] Position dans le stream : StreamViewStart = 0 [STATUS] Position dans le Tampon : BufferPosition = 0 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 0 [STATUS] Loading Stream Buffer : 65536 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 786486 [NOTICE] [ 16:23:23 ] Initialisation du tampon : BufferSize = 65536 [NOTICE] [ 16:23:23 ] Deplacement dans le stream : StreamViewStart = 0 [NOTICE] [ 16:23:23 ] Données copiées depuis stream vers le tampon : BufferSize = 65536 [STATUS] Reste dans le stream : StreamBytesLeft = 720950 [STATUS] StreamViewLength = 65536 [STATUS] StreamViewEnd = 65535 [STATUS] Lecture du tampon à la position = 0 Count = 14 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 65522 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 65518 [STATUS] Lecture du tampon à la position = 18 Count = 36 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 65482 [STATUS] gapSize1 = 0 [STATUS] Read BitCount = 24 [STATUS] Red Shift = 16 [STATUS] Green Shift = 8 [STATUS] Blue Shift = 0 [STATUS] Alpha Shift = 0 [STATUS] Red Size = 8 [STATUS] Green Size = 8 [STATUS] Blue Size = 8 [STATUS] Alpha Size = 0 [STATUS] BitFields Size = 12 [NOTICE] [ 16:23:23 ] --> Decode Image Data = 511x511 [NOTICE] [ 16:23:23 ] Vide et reinitialise le tampon à la position : 54 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 0 [NOTICE] [ 16:23:23 ] Fin du Tampon atteinte ou 1ere fois [STATUS] Position dans le stream : StreamViewStart = 54 [STATUS] Position dans le Tampon : BufferPosition = 0 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 54 [STATUS] Loading Stream Buffer : 65536 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 786432 [NOTICE] [ 16:23:23 ] Deplacement dans le stream : StreamViewStart = 54 [NOTICE] [ 16:23:23 ] Données copiées depuis stream vers le tampon : BufferSize = 65536 [STATUS] Reste dans le stream : StreamBytesLeft = 720896 [STATUS] StreamViewLength = 65536 [STATUS] StreamViewEnd = 65589 [STATUS] Lecture du tampon à la position = 0 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 64000 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 64000 [STATUS] Lecture du tampon à la position = 1536 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 62464 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 62464 [STATUS] Lecture du tampon à la position = 3072 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 60928 ---------------------------------------------------------------------- ... ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 4096 [STATUS] Lecture du tampon à la position = 61440 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 2560 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 2560 [STATUS] Lecture du tampon à la position = 62976 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 1024 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 1024 [NOTICE] [ 16:23:23 ] Pas assez de données dans le tampon, reste BufferBytesLeft = 1024 [NOTICE] [ 16:23:23 ] Nombre d'octets à lire : Count = 1536 [STATUS] Position dans le Tampon : BufferPosition = 64512 [STATUS] Différence = 512 [STATUS] Position dans le stream : StreamViewStart = 709686 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 774198 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 6144 [NOTICE] [ 16:23:23 ] Deplacement dans le stream : StreamViewStart = 774198 [NOTICE] [ 16:23:23 ] Données copiées depuis stream vers le tampon : BufferSize = 6144 [STATUS] Reste dans le stream : StreamBytesLeft = 0 [STATUS] StreamViewLength = 6144 [STATUS] StreamViewEnd = 780341 [STATUS] Lecture du tampon à la position = 0 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 4608 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 4608 [STATUS] Lecture du tampon à la position = 1536 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 3072 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 3072 [STATUS] Lecture du tampon à la position = 3072 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 1536 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 1536 [STATUS] Lecture du tampon à la position = 4608 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = 0 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = 0 [NOTICE] [ 16:23:23 ] Fin du Tampon atteinte ou 1ere fois [STATUS] Position dans le stream : StreamViewStart = 774198 [STATUS] Position dans le Tampon : BufferPosition = 6144 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 780342 [STATUS] Loading Stream Buffer : 6144 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 0 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer : Fin des données atteinte [STATUS] Lecture du tampon à la position = 0 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = -1536 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = -1536 [NOTICE] [ 16:23:23 ] Fin du Tampon atteinte ou 1ere fois [STATUS] Position dans le stream : StreamViewStart = 780342 [STATUS] Position dans le Tampon : BufferPosition = 1536 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 781878 [STATUS] Loading Stream Buffer : 6144 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 0 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer : Fin des données atteinte [STATUS] Lecture du tampon à la position = 0 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = -1536 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = -1536 [NOTICE] [ 16:23:23 ] Fin du Tampon atteinte ou 1ere fois [STATUS] Position dans le stream : StreamViewStart = 781878 [STATUS] Position dans le Tampon : BufferPosition = 1536 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 783414 [STATUS] Loading Stream Buffer : 6144 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 0 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer : Fin des données atteinte [STATUS] Lecture du tampon à la position = 0 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = -1536 ---------------------------------------------------------------------- [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.Read [STATUS] Reste dans le tampon : BufferBytesLeft = -1536 [NOTICE] [ 16:23:23 ] Fin du Tampon atteinte ou 1ere fois [STATUS] Position dans le stream : StreamViewStart = 783414 [STATUS] Position dans le Tampon : BufferPosition = 1536 [STATUS] Nouvelle Position dans le stream : StreamViewStart = 784950 [STATUS] Loading Stream Buffer : 6144 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer [STATUS] Reste dans le stream : StreamBytesLeft = 0 [NOTICE] [ 16:23:23 ] TGLZCustomBufferedStream.LoadBuffer : Fin des données atteinte [STATUS] Lecture du tampon à la position = 0 Count = 1536 [STATUS] Reste dans le tampon apres lecture : BufferBytesLeft = -1536
Des erreurs dans mon codes ? (j'ai les yeux qui me piquent, je vois plus rien à force)
Des questions, par rapport à tout ça ?
Merci d'avance
Partager