![]() |
Mobile Permission
Hallo zusammen
Ich versuche meine erste APP zu schreiben, dabei stoße ich schon am Anfang auf kleine Probleme. Ich möchte eine App erstellen, womit ich nur ein Log schreibe. Sprich, 2 Buttons, drücke ich auf OK wird in einer Datei das Datum und Zeit geschrieben. Dazu brauche ich die Mobile Permission. Hier hackt es leider. Installiert Delphi 12.1 und Mobile Permission per "GetIT Package Manage" installiert. Mein Test-Code für die Permission (gefunden im Netz)
Delphi-Quellcode:
Ich bekomme diesen Fehler
unit Unit2;
interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Memo.Types, FMX.StdCtrls, FMX.Controls.Presentation, System.Permissions, {$IFDEF ANDROID} AndroidApi.Helpers, FMX.Platform.Android, Androidapi.JNI.Widget, FMX.Helpers.Android, Androidapi.JNI.Os, {$ENDIF} FMX.Edit, System.IOUtils; type TForm2 = class(TForm) procedure FormShow(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } {$IFDEF ANDROID} PermissionWriteExternalStorage: string; {$ENDIF} end; var Form2: TForm2; implementation {$R *.fmx} procedure TForm2.FormShow(Sender: TObject); begin {$IFDEF ANDROID} PermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE); PermissionsService.RequestPermissions([PermissionWriteExternalStorage], procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>) begin if AGrantResults[0] = TPermissionStatus.Granted then ShowMessage('Erlaubt') else ShowMessage('Nicht erlaubt'); end) {$ENDIF} end; end. [DCC Fehler] HeaderFooterTemplate.pas(51): E2250 Es gibt keine überladene Version von 'RequestPermissions', die man mit diesen Argumenten aufrufen kann Testweise habe ich die Mobile Permission deinstalliert und eine ältere Version von GitHub installiert. Das hat leider auch nicht funktioniert. Kann mir jemand die Sache etwas erläutern? Bin nur ein Hobbycoder und mit Android habe ich noch nie zu tun gehabt. |
AW: Mobile Permission
Hast du mal Nachgesehn?
* CodeVervollständigung * zur CodePosition springen * ... Emba scheint an einigen Stellen doch endlich mal bissl was repariert zu haben (z.B. const/var und dergleichen geändert) wie z.B. auch hier ![]() |
AW: Mobile Permission
Probiere Mal:
Delphi-Quellcode:
procedure(const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray)
... |
AW: Mobile Permission
Oder das hier noch:
Delphi-Quellcode:
var
PA: TArray<String>; begin ... SetLength(PA, 1); PA[0] := PermissionWriteExternalStorage; ... PermissionsService.RequestPermissions(PA, procedure ... |
AW: Mobile Permission
@himitsu
Meinst du im Ernst, mir damit geholfen zu haben? Danke für dein Interesse, gebracht hat es aber gar nichts. Nicht jeder ist ein Profi. Es gibt auch Leute, die es halt ein wenig als Hobby versuchen. Einfach mal aus Spaß am Programmieren. Ein Verweis auf ein ähnliches Problem bringt in meinem Fall gar nichts. Dann bitte lieber gar nicht antworten, wenn es für dich zu einfach erscheint. @Olli73 Vielen Dank, ich muss heute leider ziemlich lange arbeiten, werde es aber gleich morgen testen. |
AW: Mobile Permission
Wir sollen also für dich das jetzt erst bei uns installieren, weil du zu faul bist selbst nachzusehn
oder uns wenigstens die Codezeile (und vielleicht noch bissl danach und davor) zu zeigen, von dem, was in der Fehlermeldung steht und wo wir jetzt nicht mal eben so bei uns nachsehn können? Obwohl alles Wichtige in der Fehlermeldung genannt wird? Du hast uns zwar deinen Code gezeigt, aber eben nicht das, wo der Fehler liegt, wobei standardmäßig niemand Dieses bei sich rumliegen hat. HeaderFooterTemplate.pas Abgesehn davon, dass ich die genannte Datei nichtmal im GitRepo zu diesem GetIt-Package finden kann. ![]() ![]() ![]() An einer Stelle wird eine Funktion aufgerufen, welche es SO garnicht gibt. Dass es diese Funktion aber gibt, wird auch gesagt, nur dass irgendwas bezüglich der Parametersignatur nicht stimmt. * fehlende oder zusätzliche Parameter (können z.B. auch geänderte/neue/entfernte Default-Parameter sein) * falsche/andere Typen (auch hier spielt eine Rolle, dass Delphi da zuletzt bissl was bei sich geändert hat, bezüglich Kompatibilitäten der TypeAlias) * einfach nur ein andere Deklaration der Parameterübergabe (const/var/out, als Pointer oder nicht) * andere CallingConvention (cdecl/stdcall/...) * die Namen der Parameter sind aber egal, kommt nur auf die Typen und die Art und Weise drauf an (z.B. bei Callbacks und Events) Ja, manchmal ändert sich an einer API etwas und dann passen Eigene oder Fremdcodes eben nicht mehr zum Anderem. Und dass sich hier, bei anderen Usern, auch schon etwas geändert hat, was nach schon etwas nach deinem Problem klingt, und was dort der Grund war, das gab ich dir als Hinweis mit, damit du aus oberer Liste erstmal diesen Punkt prüfen kannst. Aufgrund des Problems, von jemand anderem, hatte ich zwar erstmal auf Punkt 3 getippt, aber selbst wenn es jetzt Punkt 2 sein mag, ändert es nichts an der ursprünglichen Aussage, auch wenn der Tipp nicht ganz passen möge. Bei dir ist alles Wichtige vorhanden, dann ist es doch ein Leichteres für dich, im Gegenzug für uns, dort einfach mal nachzusehn, was Delphi dir anzeigt, was es dort gern haben möchte, und im Gegenzug jenes damit zu vergleichen, was du an diese Stelle siehst. Gut, wenn das mit dem TClassicStringDynArray stimmt, dann hat sich hier an einem Typ etwas geändert, welcher zum alten Typen nicht kompatibel ist (also im Prinzip das, was die Fehlermeldung auch besagt), aber genau das hättest du so auch bemerken können. Auch wenn ich es eigenartig finde, dass es "sorum" geändert wurde, also von der neueren Syntax, welche dafür gut ist solche Inkompatibilitäten zu beseitigen, zurück auf eine Ältere, welche solche Inkompatibilitäten geradezu provokativ anzieht, wobei es selten Gründe gibt, sowas absichtlich zu machen. (z.B. um zwei syntaktisch gleiche, aber logisch unterschiedliche Typen überladen zu können) |
AW: Mobile Permission
OK, dieses Mal kann ich mich bedanken, damit kann ich etwas mehr anfangen.
Danke für die ausführliche Erklärung. Heute war ein langer Tag, ich schaue morgen wie ich es umsetzen kann. Nur ganz kurz zum Klarstellen. Zitat:
So wie der "Olli73" es getan hat. Und bevor du zu jemanden sagst "weil du zu faul bist selbst nachzusehn" solltest du denjenigen erst kennen. Du brauchst nicht zu installieren, du musst auch nicht zu antworten. Du hast keine Lösung parat? Kein Problem, antworte halt nicht. Danke für deine Hilfe, das musste aber raus. Ich habe 12 Stunden Arbeit hinter mir und du quasselst von zu faul zum Nachsehen. Damit komme ich echt schlecht klar. Installiert habe ich das hier. Mobile Permissions Component for Android 2.1 Der Fehler wird an dieser Stelle angezeigt.
Delphi-Quellcode:
Dass das mit der Deklaration zusammenhängt, war mir schon irgendwie klar, nur bin ich nicht gut genug, um es selbst herauszufinden, wie es richtig sein sollte.
end)
Jetzt kann ich gezielter nach der Lösung suchen, allerdings glaube ich "Olli73" hat er schon richtig erfasst. Wie gesagt, heute war ein sehr langer Tag, morgen wird getestet. Danke für Eure Unterstützung. EDIT Das funktioniert
Delphi-Quellcode:
procedure(const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. |
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