AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Versuch: TFileBrowser für Android, geht das ohne globale Variable?
Thema durchsuchen
Ansicht
Themen-Optionen

Versuch: TFileBrowser für Android, geht das ohne globale Variable?

Ein Thema von Renate Schaaf · begonnen am 12. Nov 2020 · letzter Beitrag vom 13. Nov 2020
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.441 Beiträge
 
Delphi 12 Athens
 
#1

AW: Versuch: TFileBrowser für Android, geht das ohne globale Variable?

  Alt 13. Nov 2020, 08:11
Zitat:
Also, ohne das "with" finde ich, dass es noch doofer aussieht
Das hat nichts mit Optik zu tun, sondern mit dem Debugging.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.989 Beiträge
 
Delphi 12 Athens
 
#2

AW: Versuch: TFileBrowser für Android, geht das ohne globale Variable?

  Alt 13. Nov 2020, 08:36
Wenn das eine globale Variable sein kann, dann könntest Du im TFileBrowser eine class var anlegen.
Normalerweise wird sowas über z.B. Instance gemacht.

Nur mal so grob hingeschrieben, ohne Gewähr:
Da fehlt noch der Klassendestruktor zur Freigabe (das mag hier nicht so wichtig sein, aber wenn man es sich nicht angewöhnt Speicherlecks zu vermeiden findet man im Fehlerfall, wenn es wichtig gewesen wäre, dann die Ursache nur schlecht). Initialisiert wird die Variable wiederum automatisch.

Das hat nichts mit Optik zu tun, sondern mit dem Debugging.
Zum nicht funktionierenden Debugging kommen noch potentielle Problemen bei Updates zu neuen Delphiversionen. Ein einfaches Beispiel dafür waren damals bei ich glaube XE2 die VirtualTrees. Eigentlich hätten die normal weiter funktioniert. TRect hatte damals aber Width und Height oder so bekommen und plötzlich bog das with <TRect-Variable> den Zugriff auf Width und Height der Komponente auf das TRect um...

So etwas ist dann teilweise sehr schwer zu finden, da es oft problemlos weiter kompiliert, an anderer Stelle aber plötzlich Fehler auftreten, die man dann ewig sucht.

Von daher macht man sich damit nur unnötigerweise Probleme.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Versuch: TFileBrowser für Android, geht das ohne globale Variable?

  Alt 13. Nov 2020, 09:04
So funktioniert's prima, und ganz ohne with:

Delphi-Quellcode:
class function TFileBrowser.Instance: TFileBrowser;
begin
  if not assigned(FInstance) then
    FInstance := TFileBrowser.Create;
  Result := FInstance;
end;

class constructor TFileBrowser.Create;
begin
  //Ist doch eigentlich unnötig, oder?
  FInstance := nil;
end;

class destructor TFileBrowser.Destroy;
begin
  fInstance.free;
end;

class procedure TFileBrowser.BrowseForFile(Content: TContentEnum;
  OnExecute: TFileBrowseEvent);
begin
  Instance.Initialize(Content, OnExecute);
end;

procedure TFileBrowser.Initialize(Content: TContentEnum;
  OnExecute: TFileBrowseEvent);
var
  Intent: JIntent;
begin
  fOnExecute := OnExecute;
  fMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage
    (TMessageResultNotification, HandleActivityMessage);
  Intent := TJIntent.Create;
  Intent.setType(StringToJString(ContentStrings[Content]));
  Intent.setAction(TJIntent.JavaClass.ACTION_GET_CONTENT);
  MainActivity.startActivityForResult(Intent, 0);
end;
Danke nochmal.
Renate

Geändert von Renate Schaaf (13. Nov 2020 um 09:11 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 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