[Problème Ecriture découplée dans TMémo]
Bonjour à tous.


J'essaye d'implanter un petit système de traçage d'évènements dans une appli.

Je souhaite pouvoir écrire dans un TMémo en passant
par une variable de type TStrings.

Ce ne me semble pas trop exotique comme comme idée...
et pourtant je me heurte au problème suivant :

Je joins mon code ultrasimplifié

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
 
Unit u_essai_log;
 
{$mode Objfpc}{$H+}
 
Interface
 
Uses
    Classes
  , Sysutils
  , Lresources
  , Forms
  , Controls
  , Graphics
  , Dialogs
  , StdCtrls
  { --  mes unités  --  }
//  , u_c_trace
  ;
 
Type
 
  { Tform1 }
 
  Tform1 = Class(Tform)
    Btn_Creation_coupleur_: TButton;
    Memo1: Tmemo;
    Procedure Btn_creation_coupleur_click(Sender: Tobject);
    Procedure Formactivate(Sender: Tobject);
    Procedure Formcreate(Sender: Tobject);
  Private
    { Private Declarations }
  Public
    { Public Declarations }
  End; 
 
Var
  Form1: Tform1; 
  g_truc : TStrings;
Implementation
 
{ Tform1 }
 
procedure affiche(const S : String);
begin
  if assigned(g_truc)
    then g_truc.Add(S)
    else showmessage('G_truc = NIL');
end;
Procedure Tform1.Formcreate(Sender: Tobject);
Begin
//{
  if Assigned(MeMo1)
    then g_truc := memo1.Lines
    else showmessage( 'Memo1 non assigné');
//}
End;
 
Procedure Tform1.Btn_creation_coupleur_click(Sender: Tobject);
var
  l_str : string;
Begin
  l_str := '>azertyuiop<';
  Affiche(l_str);
//  memo1.Lines.Add(l_str);
End;
 
Procedure Tform1.Formactivate(Sender: Tobject);
Begin
{
  if Assigned(MeMo1)
    then g_truc := memo1.Lines
    else showmessage( 'Memo1 non assigné');
  affiche ('Assignation effectuée');
}
End;
 
 
Initialization
  {$I u_essai_log.lrs}
 
End.
1/ Affectation dans FormCreate

- j'obtiens un message Projerct raised exception class : EXTERNAL SIGSEGV

2/ Affectation dans Formactive

- j'obtiens le bon comportement mais je rédéfinis mon affectation à chaque prise de main de la fenêtre...
je ne peux pas me contenter de ce comportement qui me posera problème lors de l'implantation de mon unité




J'ai déjà recherché dans le forum et ai suivi les indications de cette discussion:

http://www.developpez.net/forums/sho...hlight=SIGSEGV



J'ai LAZARUS 0.9.24 beta, Windows XP, Debogueur = none,
mes répertoires sont compatibles MSDOS, et je ne pense pas compiler trop loin de la racine.


maintenant voici mes hypothèses :

- Je passe à côté de quelque chose d'ultra simple qu'un débutant comme moi ne voit pas même près de son nez.

- Le composant TMémo n'est pas totalement initialisé lors de l'éxécution de FormCreate.

Bref, Auriez-vous une idée me permettant d'avancer sur ce problème ?


Merci par avance de vos réponses éventuelles.

Cordialement Captain