Bonjour
Qu'est-ce qui peut provoquer une opération de ponteur incorrecte ?
Bonjour
Qu'est-ce qui peut provoquer une opération de ponteur incorrecte ?
L'erreur pointeur incorrecte apparait depuis que j'ai ajouté le code suivant:
Je ne vois pas d'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 // Code ajouté pour effacer les fichiers du répertoire CALIB Sts:= Tstrings.Create; try Sts:=FileListBox.Items; S:= ExtractFilePath(Application.exeName)+'Data\CALIB\'; ChDir(FileListBox.Directory); for i := 0 to Sts.Count - 1 do DeleteFile(S+Sts[i]); FileListBox.Clear; ChDir(ExtractFilePath(Application.exeName)); finally Sts.Free; end; // Fin du code ajouté
l'erreur est certainement due à la mauvaise utilisation de Sts.
tel que tu le fait, tu libère l'objet Items du FileListBox, et non Sts. essaie comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // Code ajouté pour effacer les fichiers du répertoire CALIB Sts:= Tstrings.Create; try Sts.Assign(FileListBox.Items); S:= ExtractFilePath(Application.exeName)+'Data\CALIB\'; ChDir(FileListBox.Directory); for i := 0 to Sts.Count - 1 do DeleteFile(S+Sts[i]); FileListBox.Clear; ChDir(ExtractFilePath(Application.exeName)); finally Sts.Free; end; // Fin du code ajouté
à la ligne "Sts.Assign(FileListBox.Items)" il déclanche une "Erreur abstraite" !!!
C'est quoi cette nouvelle erreur ?
je viens de remplacer la ligne "sts.Assign" par :
J'obtiens la même erreur abstraite !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part for i := 0 to FileListBox.Count - 1 do Sts.Add(FileListBox.Items[i]);
Utilises plutôt un TStringList
la classe TStrings ne doit pas être utilisée directement, car contenant des méthodes abstraites (d'où l'erreur).Dérivez une classe de TStrings pour stocker et manipuler une liste de chaînes.TStrings contient des méthodes abstraites ou,dans la terminologie C++,virtuelles pures et ne doit pas être instanciée directement.
ceci devrait fonctionner:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // Code ajouté pour effacer les fichiers du répertoire CALIB Sts:= TStringList.Create; try Sts.Assign(FileListBox.Items); S:= ExtractFilePath(Application.exeName)+'Data\CALIB\'; ChDir(FileListBox.Directory); for i := 0 to Sts.Count - 1 do DeleteFile(S+Sts[i]); FileListBox.Clear; ChDir(ExtractFilePath(Application.exeName)); finally Sts.Free; end; // Fin du code ajouté
Mille merci !
La solution TstringList ne provoque plus l'erreur.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager