Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   BufferedReader in Firemonkey? (https://www.delphipraxis.net/183085-bufferedreader-firemonkey.html)

blackdrake 11. Dez 2014 09:08

AW: BufferedReader in Firemonkey?
 
Hallo,

ich konnte nun Java2OP nachvollziehen und habe die gleiche Unit herausbekommen.

Allerdings kommt bei folgender Zeile eine Fehlermeldung:

Delphi-Quellcode:
TRegTypes.RegisterType('Androidapi.JNI.Interfaces.JBufferedReader', TypeInfo(Androidapi.JNI.Interfaces.JBufferedReader));


[DCC Error] Androidapi.JNI.java.io.BufferedReader.pas(48): E2003 Undeclared identifier: 'Androidapi.Jni'

In der Tat gibt es keine Datei Androidapi.JNI.Interfaces.JBufferedReader.pas - wo bekomme ich die her?



PS: Wie ruft man den Konstruktor nun auf?

Delphi-Quellcode:
var
  x: JBufferedReader;
  AInputStream: JInputStream;
begin
  AInputStream := ...;
  x:= TJBufferedReader.Create; // <-- keine Parameter erwartet!
  TJBufferedReader(x).Init(AInputStream); // so?
end;

mkinzler 11. Dez 2014 11:01

AW: BufferedReader in Firemonkey?
 
Delphi-Quellcode:
In der Tat gibt es keine Datei Androidapi.JNI.Interfaces.JBufferedReader.pas - wo bekomme ich die her?
Das ist die Datei, die Java2OP erzeugt hat( entsprechend umbenennen, Dateiname = Unitname).

Zitat:

PS: Wie ruft man den Konstruktor nun auf?
Wenn ich die Beispiele richtig interpretiere, so:

Delphi-Quellcode:
var
  x: JBufferedReader;
  AInputStream: JInputStream;
begin
  AInputStream := ...;
  TJBufferedReader.JAVACLASS.Init(AInputStream); // so?
end;

Sir Rufo 11. Dez 2014 12:52

AW: BufferedReader in Firemonkey?
 
Seid ihr euch alle sicher, dass Jave2Op hier richtig importiert?
Delphi-Quellcode:
unit Androidapi.JNI.java.io.BufferedReader; // aha, so heißt die Unit

interface

...

type
// ===== Forward declarations =====

  JBufferedReader = interface;//java.io.BufferedReader // aha, so heißt das Interface

...

implementation

procedure RegisterTypes;
begin
  TRegTypes.RegisterType(
    'Androidapi.JNI.Interfaces.JBufferedReader', // ähm, ist die nicht mit DIESER Unit deklariert worden
    TypeInfo(
      Androidapi.JNI.Interfaces.JBufferedReader // ähm, den Typen gibt es HIER
    )
  );
end;

initialization
  RegisterTypes;
end.
Also entweder man benennt die Unit um oder man passt das
Delphi-Quellcode:
RegisterTypes
an
Delphi-Quellcode:
unit Androidapi.JNI.java.io.BufferedReader; // aha, so heißt die Unit

type
    JBufferedReader = interface;//java.io.BufferedReader // aha, so heißt das Interface
...
procedure RegisterTypes;
begin
  TRegTypes.RegisterType(
    'Androidapi.JNI.java.io.BufferedReader.JBufferedReader', // ähm, ist die nicht mit DIESER Unit deklariert worden
    TypeInfo(
      Androidapi.JNI.java.io.BufferedReader.JBufferedReader // ähm, den Typen gibt es HIER
    )
  );
end;

Union 11. Dez 2014 13:06

AW: BufferedReader in Firemonkey?
 
Das Registertype ist sowieso nur von Nöten, wenn man diese Typen in JNI Arrays verwenden möchte.

Mavarik 11. Dez 2014 15:58

AW: BufferedReader in Firemonkey?
 
Zitat:

Zitat von blackdrake (Beitrag 1282936)
Bzgl. "Blockierungsfrei lesen selbst programmieren" - das habe ich schon versucht. Allerdings ging das (wie in StackOverflow beschrieben) nur mit der JInputStream.available() Funktion, die laut Javadokumentation nicht für diesen Zweck verwendet werden soll, da der Wert nur eine grobe Schätzung ist - in der Tat haben manche Geräte wegen der schlechten Schätzung dauerhaft blockiert oder nie gelesen, da available() bei manchen Geräten immer 0 oder immer >0 war.

OK, mach was Du willst.. aber lass doch einfach "JInputStream.available()" mist weg... Bau dir nen netten Thread mit einen Buffer und lies über davon Blockungsfrei ein. Fertig in 10 min.

Ich habe fertig...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz