Bonsoir,
Cela fait 40 ans que je code en Pascal (Turbo puis Delphi et maintenant Lazarus) et je n'ai jamais connu cette erreur.
Je compile le code suivant sans erreur, mais lorsque je le débogue via F7, arrivé au constructeur "Init", le débogueur pas-à-pas pointe sur la ligne BEGIN, puis saute immédiatement sur END.
Donc aucune initialisation, et forcément tout appel à un TFile par après cela plante avec un message SIGSEGV, ce qui est logique.
Alors pourquoi diable INIT ne s'exécute-t'il pas?

Please help me before I cry!


Voici le code :

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
Type
  TFile = Class(TPersistent)
  Constructor Init(IPath: String; Mode: Char);
  Destructor  Done;
Private
  F: TextFile;
  Path: string;
  end;
 
 
implementation
 
 
Constructor TFile.Init(IPath: String; Mode: Char);
Var
  Code: Integer;
Begin
  Path:=IPath;
  If Mode='w' Then
    Code:=0
  else
    If Mode='a' Then
      Code:=1
   else
     Code:=2;
  If FileExists(Path) Then begin
    AssignFile(F, Path);
    Case Code of
      0:  Rewrite(F);
      1:  Append(F);
      2:  Reset(F);
   end;
  end else Begin
    AssignFile(F, Path);
    Rewrite(F);
  end;
end;