Bonjour,
J'ai eu un problème quand je voulais convertir 1 string en byte en utilisant strToIntDef
J'ai une fonction comme suit :
Quand j'appelle par exemple SetTons(6,'31234') ou SetTons(6,'') elle marche très bien. J'ai bien eu $FF dans octetsByBloc si "value" est une chaine vide.
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 type TString5 = String[5]; //pour info octetsByBloc: array of byte; function SetTons(index:integer; value:TString5 ) var i:integer; begin for i:=0 to 4 do begin octetsByBloc[Index+i]:= strToIntDef('$'+Value[i+1],$FF); end; end;
Maintenant si je réécris la fonction SetTons pour qu'elle devient plus générique :
Quand j'appelle Set5Tons(6, ''), j'ai eu l'erreur "Violation d'access ..."
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 type TString5 = String[5]; //pour info octetsByBloc: array of byte; procedure SetTons(index:integer; value:string; nbre:integer) var i:integer; begin for i:=0 to nbre-1 do begin octetsByBloc[Index+i]:= strToIntDef('$'+Value[i+1],$FF); end; end; procedure Set5Tons(index:integer; value:TString5) begin SetTons(index, value, 5); end;alors que c'est quasiment la même fonction ?!
Avez vous une idée...?
Merci beaucoup,
VR
Partager