Bonjour
je me permet de vous solliciter car ca fait un peu de temps que je bloque sur mon problème.
voici mon code qui pose probleme :
Au départ, j'effectue un get qui me permet de faire un monitoring d'événements à travers le réseau. Je me sers donc de l'événement DocData pour traiter le message que je reçois (au format texte).
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 // ECRITURE DANS LA BASE DE DONNEES procedure TFicheGet.EcrireBDD(var data: TstringList); var SQLMsg: string; begin SQLQuery1.Params[0].Clear; SQLQuery1.Params[0].AsString := data.values['EVENTDATA_TIMESTAMP']; SQLQuery1.Params[1].AsString := data.values['EVENTDATA_NAME']; SQLQuery1.Params[2].AsString := data.values['EVENTDATA_TYPE']; SQLQuery1.Params[3].AsString := data.values['OBJECTDATA_NAME']; SQLQuery1.Params[4].AsString := data.values['OBJECTDATA_TYPE']; SQLMsg := 'INSERT INTO DGFEVT(EVENTDATA_TIMESTAMP,EVENTDATA_NAME,EVENTDATA_TYPE,OBJECTDATA_NAME,OBJECTDATA_TYPE) VALUES (:EVENTDATA_TIMESTAMP, :EVENTDATA_NAME, :EVENTDATA_TYPE, :OBJECTDATA_NAME, :OBJECTDATA_TYPE)'; SQLQuery1.sql.Add(SQLMsg); // Stockage de la requete dans le sql FilDeLeau.Lines.Add('Requête ajoutée dans sqlquery'); SQLQuery1.ExecSQL; // Exécution de la requete stockée FilDeLeau.Lines.Add('Requête exécutée'); SQLQuery1.sql.Clear; // Nettoyage des requetes stockées FilDeLeau.Lines.Add ('Connexion fermée - Fin de la procédure Traitement des données'); end; // PROCEDURE DE TRAITEMENT DU CONTENU DE LA REQUETE procedure TFicheGet.TraitementData(var DataList: String); var sl: TstringList; begin sl := TstringList.Create; sl.Text := DataList; if sl.values['OBJECTDATA_TYPE'] = 'GLOBAL_EVENT' then begin // Ajout dans le mémo 2 EcrireMemo2(sl); FilDeLeau.Lines.Add('Evenement global MemoEcrit'); // traitement base EcrireBDD(sl); FilDeLeau.Lines.Add('Ecriture dans base terminée'); end; // Tous les événements affichés dans le mémo 3 EcrireMemo3(sl); sl.free; FilDeLeau.Lines.Add('Liste de données de la requete libérée'); end; // SUR EVENEMENT DE RECEPTION D'UNE REQUETE procedure TFicheGet.HttpCli1DocData(Sender: TObject; Buffer: Pointer; Len: Integer); var str: ARRAY [0 .. 9] OF string; begin setstring(str[I], PAnsichar(Buffer), Len); FilDeLeau.Lines.Add('DocData n° ' + inttostr(I)); Memo1.Lines.Clear; Memo1.Lines.Add(str[I]); TraitementData(str[I]); if I = 10 then I := 0; I := I + 1; end;
Le probleme que j'ai, c'est lorsqu'un événement est de type GLOBAL_EVENT, il doit être inséré en base de données. et le problème est que la premiere fois qu'un GLOBAL_EVENT est activé, il rentre bien en base. mais le 2eme événement de type GLOBAL_EVENT reste bloqué dans la procédure d'insertion EcrireBDD.
De plus, lors de ce "blocage", le memo1 se se "clear" pas, mais il se remplit quand même.
Je n'arrive pas à trouver la cause du probleme. Quelqu'un pour me conseiller?
Partager