Bonjour,

J´ai un problème avec la procedure suivante, laquelle fonctionne sans sousis sous Windows mais pas sous FMX Android.
Le fichier n´est pas crée sous Android.

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
 
procedure TForm1.FilePutCode(Index : Longint; Code : TCode);
var
  Dir, Path   : string;
  FileHandle  : Integer;
  CodeFile     : string = 'mdexec.dat';
begin
  Dir := System.IOUtils.TPath.GetDocumentsPath + System.IOUtils.TPath.DirectorySeparatorChar;
  Path := Dir + CodeFile;
 
  if not FileExists(Path) then
    FileHandle := FileCreate(Path)
  else
    FileHandle := FileOpen(Path, fmOpenWrite);
  FileSeek(FileHandle, Index * SizeOf(Code), 0);
  FileWrite(FileHandle, Code, SizeOf(Code));
  FileClose(FileHandle);
end;
Le message du debugeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
  raise GetExceptionObject(ExceptionEIP, FaultAddr, ErrorCode) at Pointer(ExceptionEIP);
J´ai trouvé le problème, c´était pas cette procedure mais une autre.
comment je peut faire la procedure suivante, qui fonctionne sous windows mais pas sous Android.
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
 
function TMiniDOForm.DecodeSpecialCode : Longint;
var
  CodeStr   : string;
  ModKey    : TKey;
  MachineID : string;
  Modifier  : longint;
  InputString: string;
 
begin
  Result := 0;
  MachineID := '';
  Modifier := GenerateMachineModifierPrim;
  MachineID := BufferToHex(Modifier, SizeOf(Modifier));
  ModKey := TheKey;
  ApplyModifierToKeyPrim(Modifier, ModKey, SizeOf(ModKey));
  {First see if existing Special code is valid}
 
  if IsSpecialCodeValid(ModKey, SpecialCode) then begin
    Result := GetSpecialCodeValue(ModKey, SpecialCode);
    Exit;
  end;
  {Otherwise prompt user for Special code}
  CodeStr := '';
 
  {$IFDEF MSWINDOWS}
  if InputQuery('Machine ID: '+ MachineID ,
       'Release Code', CodeStr) then begin
    HexToBuffer(CodeStr, SpecialCode, SizeOf(SpecialCode));
    if IsSpecialCodeValid(ModKey, SpecialCode) then
      Result := GetSpecialCodeValue(ModKey, SpecialCode);
  end;
  {$ENDIF MSWINDOWS}
 
{$IFDEF ANDROID} 
   InputBox('Machine ID: '+ MachineID, 'Release Code',CodeStr,
       procedure(const AResult: TModalResult; const AValue: string) //<---- Ici je recoit l´erreur 
        begin
            case AResult of
            mrOk:
                begin
                  // AValue is the result of the inputbox dialog
                  HexToBuffer(AValue, SpecialCode, SizeOf(SpecialCode));
                end;
              mrCancel:
                begin
                end;
           end;
    end
      );
 
        if IsSpecialCodeValid(ModKey, SpecialCode) then
       Result := GetSpecialCodeValue(ModKey,  SpecialCode);
 
{$ENDIF ANDROID}
end;