Hello together and especially hello Jonas,

I'm currently playing around with Android again. Mostly to implement a backup/restore procedure for my TrainLog application as I want to update my device (official ICS update, yippieh!) and don't plan to lose all my collected train counts...

Nevertheless I added a routine to my application, but when I try to "dx" the generated class file I get an error about an invalid locale.

Here is the offending method (extracted, but error is reproduceable) [it's based on Java code mentioned here: http://stackoverflow.com/a/6542214 ]:

=== unit begin ===

unit Test;

{$mode objfpc}{$H+}
{$modeswitch unicodestrings}

interface

uses
  AndroidR14;

type
  TTest = class
  private
    procedure CopyFile(aSrc, aDest: JIFile);
  end;

implementation

procedure TTest.CopyFile(aSrc, aDest: JIFile);
var
  outstr: JIFileOutputStream;
  instr: JIFileInputStream;
  outchannel, inchannel: JNCFileChannel;
begin
  outstr := JIFileOutputStream.Create(aDest);
  instr := JIFileInputStream.Create(aSrc);

  try
    inchannel := instr.getChannel;
    outchannel := outstr.getChannel;
inchannel.transferTo(0, inchannel.size, outchannel as JNCWritableByteChannel);
  finally
    try
      if Assigned(inchannel) then
        inchannel.close;
    finally
      if Assigned(outchannel) then
        outchannel.close;
    end;
  end;
end;

end.

=== unit end ===

The output of "dx" when called with "--dex --output=classes.dex lib/" (where lib is the directory I set for FPC's "-FE" option) is the following:

=== output begin ===

EXCEPTION FROM SIMULATION:
local 0006: invalid

...at bytecode offset 00000092
locals[0000]: LTTest;
locals[0001]: Ljava/io/File;
locals[0002]: Ljava/io/File;
locals[0003]: Ljava/io/FileOutputStream;
locals[0004]: Ljava/io/FileInputStream;
locals[0005]: <invalid>
locals[0006]: <invalid>
locals[0007]: Ljava/lang/Object;
locals[0008]: <invalid>
locals[0009]: <invalid>
locals[000a]: <invalid>
locals[000b]: <invalid>
locals[000c]: type{java.lang.Object}
locals[000d]: <invalid>
locals[000e]: <invalid>
locals[000f]: <invalid>
...while working on block 0092
...while working on method CopyFile:(Ljava/io/File;Ljava/io/File;)V
...while processing CopyFile (Ljava/io/File;Ljava/io/File;)V
...while processing TTest.class

1 error; aborting

=== output end ===

I'm using revision 21737 (pretty up to date ^^)

Regards,
Sven
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to