On 30.06.2012 17:31, Jonas Maebe wrote:
On 30 Jun 2012, at 16:34, Sven Barth wrote: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;The problem is that Android (and the JVM) assume that it's possible that an exception occurs inside instr.getChannel. In that case, inchannel will not be initialized inside the finally block, and you're not allowed to use any potentially uninitialized data. So you have to explicitly set inchannel and outchannel to nil before the first try-block.
Aha! That explains and solves the problem. Thank you. Regards, Sven _______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-devel
