AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung IOS Platform Funktion cast {class}Pointer to Interface ???
Thema durchsuchen
Ansicht
Themen-Optionen

IOS Platform Funktion cast {class}Pointer to Interface ???

Ein Thema von QuickAndDirty · begonnen am 19. Aug 2025 · letzter Beitrag vom 19. Aug 2025
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.061 Beiträge
 
Delphi 12 Athens
 
#1

IOS Platform Funktion cast {class}Pointer to Interface ???

  Alt Gestern, 10:20
ich habe diese schöne KI generierte unit ...die Fehler habe ich fast alle korrigiert... außer diesen einen.

Delphi-Quellcode:
unit uCurrentTimeZoneID;

interface
uses SysUtils,
     Types,
     Classes;

Function GetCurrentTimeZoneID:String;

implementation

Uses dateutils
    , Macapi.Helpers
    , Macapi.ObjectiveC
    , iOSapi.Foundation
    , FMX.Helpers.iOS ;

Function GetCurrentTimeZoneID:String;
Begin
  // On iOS, we use the Foundation framework's NSTimeZone class.
  // The 'name' property provides the IANA identifier.
  var LTimeZone: NSTimeZone;
  try
    // Get the system's local timezone object
    LTimeZone := TNSLocalTimeZone.OCClass.localTimeZone; <--------FEHLER : Localtimezone ist ein Pointer aber NSTimeZone ist ein Interface...
    if LTimeZone <> nil then
      Result := NSStrToStr(LTimeZone.name) // convert NSString to String
    else
      Result := TTimeZone.Local.ID; // Fallback if the object is nil
  except
    on E: Exception do
      Result := TTimeZone.Local.ID;// In case of any error, fallback to the default Delphi implementation
  end;
End;

end.
Allerding liefert TNSLocalTimeZone.OCClass NUR Pointer wo es eigentlich irgendwelche Objekte liefern sollte.
kann ich das einfach mit nem Typecast hinter mich bringen?
LTimeZone := NSTimeZone(TNSLocalTimeZone.OCClass.localTimeZone);
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty (Gestern um 10:42 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.242 Beiträge
 
Delphi 12 Athens
 
#2

AW: IOS Platform Funktion cast {class}Pointer to Interface ???

  Alt Gestern, 13:33
Probier das mal mit wrap()

Delphi-Quellcode:
function GetCurrentTimeZoneID: string;
var
  LTZPtr: Pointer;
  LTimeZone: NSTimeZone;
begin
  try
    // 1) Pointer aus der Klassen-API holen
    LTZPtr := TNSTimeZone.OCClass.localTimeZone;

    // 2) In Interface „wrappen“
    if LTZPtr <> nil then
    begin
      LTimeZone := TNSTimeZone.Wrap(LTZPtr);
      // 3) NSString -> Delphi-String
      Result := NSStrToStr(LTimeZone.name); // IANA-ID, z.B. "Europe/Berlin"
      Exit;
    end;

    // Fallback
    Result := TTimeZone.Local.ID;
  except
    on E: Exception do
      Result := TTimeZone.Local.ID;
  end;
end;

end.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.061 Beiträge
 
Delphi 12 Athens
 
#3

AW: IOS Platform Funktion cast {class}Pointer to Interface ???

  Alt Gestern, 15:00
OMG danke das sieht gut aus.
So netto war keine Zeile von dem KI code korrekt, aber trotzdem war die "Idee" die richtige und es ließ sich alles korrigieren.
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty (Gestern um 15:02 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 09:59 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