Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Mac OS X -> Ohne Delphi keine Funktion ? (https://www.delphipraxis.net/181377-mac-os-x-ohne-delphi-keine-funktion.html)

arnof 10. Aug 2014 18:17

Mac OS X -> Ohne Delphi keine Funktion ?
 
Probleme über Probleme, wie ein echter Anfänger:

starte ich das PRG via Delphi geht das Ding!

Ohne Delphi macht das Ding sofort zu: man sieht es kurz aufblitzen das wars!

Dieses Verhalten ist im scratchdir des PAServers so und aber auch auch in einer ordentlich erzeugt Appstore Prg.

Wo und wie kann man da male schauen was da los ist ?!

Daniel 10. Aug 2014 19:12

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Was sagt denn die Console Deines Mac?

arnof 10. Aug 2014 19:31

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Exited with code:1

arnof 10. Aug 2014 20:06

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Ursache des Problems gefunden:

aus Delphi heraus gestartet funktioniert GetCurrentDir. Selbst gestartet gibt das Ding nur / zurück!

Es sollte sich aber dann nicht einfach verabschieden, sondern mal irgendeine Fehlermeldung ausgeben …

Hier für alle geplagten mal eine universelle Funktion, die sicher das Programmverzeichnis bzw Zugriffsverzeichnis findet:

Delphi-Quellcode:
{
 Sucht das Programmverzeichnis (Datenverzeichnis)
}
function GET_HomePath(PathToData,Datei:string):string;
begin
   {$IFDEF MSWINDOWS}
   if PathToData='' then PathToData:=ExtractFilePath(ParamStr(0));                        // Windows
   {$ENDIF}
   {$IFDEF MACOS}
   {$IFDEF IOS}
   if PathToData='' then PathToData:=TPath.GetDocumentsPath+TPath.DirectorySeparatorChar; // iOS
   {$ELSE}
   if PathToData='' then PathToData:=ExtractFilePath(ParamStr(0));                        // MacOSX
   {$ENDIF}
   {$ENDIF}
   // Fallse wir hier irgendein System vergessen haben nochmals zur Sicherheit
   {$IFDEF NEXTGEN}
   if PathToData='' then PathToData:=TPath.GetDocumentsPath;                              // Android und sonstige zukünftigen Plattformen
   {$ELSE}
   if PathToData='' then TPath.GetHomePath;
   {$ENDIF}
   result:=TPath.Combine(PathToData, Datei);
end;

Harry Stahl 10. Aug 2014 20:56

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Ist das beabsichtigt, oder nur ein Versehen:

Wenn PathToData leer ist, lieferst Du

- unter Windows und MAC das Programmverzeichnis zurück (nicht für User- oder Anwendungsdaten geeignet)
- unter IOS und Android das Dokumentenverzeichnis (gut für Userdaten, nichts für Anwendungsdaten)

Obwohl der Name GET-Homepath lautet, wird im Ergebnis ein Dateiname und nicht ein Verzeichnis zurückgeliefert (wenn die Variable Datei einen Inhalt hat).

arnof 11. Aug 2014 08:41

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Zitat:

Zitat von Harry Stahl (Beitrag 1268258)
Ist das beabsichtigt, oder nur ein Versehen:

Wenn PathToData leer ist, lieferst Du

- unter Windows und MAC das Programmverzeichnis zurück (nicht für User- oder Anwendungsdaten geeignet)
- unter IOS und Android das Dokumentenverzeichnis (gut für Userdaten, nichts für Anwendungsdaten)

Obwohl der Name GET-Homepath lautet, wird im Ergebnis ein Dateiname und nicht ein Verzeichnis zurückgeliefert (wenn die Variable Datei einen Inhalt hat).

Ja absicht: GetHomepath ist nur dafür da, wenn alles andere nicht ging (sollte nicht vorkommen).

iOS und Android sollte/darf man keine Dateien in Programmverzeichnis legen, sondern ins Dokumentverzeichnis!

arnof 11. Aug 2014 08:56

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Zitat:

Zitat von arnof (Beitrag 1268238)
Probleme über Probleme, wie ein echter Anfänger:

starte ich das PRG via Delphi geht das Ding!

Ohne Delphi macht das Ding sofort zu: man sieht es kurz aufblitzen das wars!

Dieses Verhalten ist im scratchdir des PAServers so und aber auch auch in einer ordentlich erzeugt Appstore Prg.

Wo und wie kann man da male schauen was da los ist ?!

Jetzt wird es noch komischer:

Gestern dachte ich es währe nun alles ok: nun doch nicht :twisted::roll:

im Debugmodus läuft das Programm nun auch direkt gestartet! Im Releasemodus macht es zu ohne eine Meldung auszugeben :pale::glaskugel:

arnof 11. Aug 2014 09:01

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Nun noch besser, da kann man sich nun über Bugs in XE6 Streiten oder nicht:

ich gebe ShowMessages aus, um zu sehen wo es Probleme gibt, dann läuft die "scheiße" nun auch im Releasemodus!

Bei OnShow mach ich nur eine db connection auf, nichts schlimmes :cry:

arnof 11. Aug 2014 09:11

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Zitat:

Zitat von arnof (Beitrag 1268287)
Nun noch besser, da kann man sich nun über Bugs in XE6 Streiten oder nicht:

ich gebe ShowMessages aus, um zu sehen wo es Probleme gibt, dann läuft die "scheiße" nun auch im Releasemodus!

Bei OnShow mach ich nur eine db connection auf, nichts schlimmes :cry:

ich habe nun meine paar Zeilen von onShow in einen Timer gelegt, dann klappt es; falls auch mal jemand nicht zu verstehende Probleme hat, vielleicht hilft mein Tipp!

Harry Stahl 11. Aug 2014 16:20

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Zitat:

Zitat von arnof (Beitrag 1268283)
Ja absicht: GetHomepath ist nur dafür da, wenn alles andere nicht ging (sollte nicht vorkommen).

iOS und Android sollte/darf man keine Dateien in Programmverzeichnis legen, sondern ins Dokumentverzeichnis!

Das ist schon klar, ich meinte ja auch die Rückgabe unter Windows: Da soll man auch keine Anwender- oder Programmdaten in das Programmverzeichnis schreiben (sondern in das Programmdatenverzeichnis).

Harry Stahl 11. Aug 2014 16:31

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Zitat:

Zitat von arnof (Beitrag 1268287)
Nun noch besser, da kann man sich nun über Bugs in XE6 Streiten oder nicht:

ich gebe ShowMessages aus, um zu sehen wo es Probleme gibt, dann läuft die "scheiße" nun auch im Releasemodus!

Bei OnShow mach ich nur eine db connection auf, nichts schlimmes :cry:

Was bei Debug / Release-Modus schnell vergessen wird: Zum einen kann die Bereitstellungsliste jeweils anders sein, als vielleicht benötigt. Ferner hat man unter den Projektoptionen ein Präprozessorsymbol (sprich eine Definition für eine bedingte Compilierung) vielleicht nur unter Release oder Debug drin, so dass hier dann tatsächlich die Programmlogik unter Release und Debug anders sein kann.

Nicht selten ist gar nicht Delphi oder FMX schuld, sondern man hat halt selber einen Fehler gemacht, ist aber aufgrund des relativ starken Geschimpfes über FMX allzu schnell bereit FMX die Schuld zuzuweisen. Und hinterher stellt es sich ganz anders raus...

arnof 11. Aug 2014 16:31

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Zitat:

Zitat von Harry Stahl (Beitrag 1268358)
Zitat:

Zitat von arnof (Beitrag 1268283)
Ja absicht: GetHomepath ist nur dafür da, wenn alles andere nicht ging (sollte nicht vorkommen).

iOS und Android sollte/darf man keine Dateien in Programmverzeichnis legen, sondern ins Dokumentverzeichnis!

Das ist schon klar, ich meinte ja auch die Rückgabe unter Windows: Da soll man auch keine Anwender- oder Programmdaten in das Programmverzeichnis schreiben (sondern in das Programmdatenverzeichnis).

Ich mach das aber, denn die Kunden finden Ihre Daten nicht. Die Windows Dateistruktur ist ja ein ganzes Forum für sich. Deshalb installiere ich meine Programme nicht mehr unter Programme, sondern in eigene Verzeichnisse. Dann kann der Kunde leicht backupen bzw einen Rechnerumzug machen ohne das ich helfen muss!

Zur Bereitstellung: deshalb benutze ich immer die Option "alle Konfigurationen"

Harry Stahl 11. Aug 2014 16:46

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Zitat:

Zitat von arnof (Beitrag 1268361)
Ich mach das aber, denn die Kunden finden Ihre Daten nicht. Die Windows Dateistruktur ist ja ein ganzes Forum für sich. Deshalb installiere ich meine Programme nicht mehr unter Programme, sondern in eigene Verzeichnisse. Dann kann der Kunde leicht backupen bzw einen Rechnerumzug machen ohne das ich helfen muss!

OK, dann wird die Sache verständlich. Ich hätte hier auch gar keinen Anlass gehabt, mich zu Deiner sicher gutgemeinten Hilfestellung zu äußern, mir fiel eben nur auf, dass diese Lösung nicht die Standards einhält und es ja dann letztlich damit auch gar nicht funktioniert, wenn Jemand unter Windows sein Programm wie sonst üblich in das Programmverzeichnis installiert.

Man kann die Programme natürlich woanders hin installieren, aber das erhöht nicht die Sicherheit, da sich jeder Virus sogar ohne Adminrechte in Deine Exe-Dateien schreiben kann. Außerdem gibt es Kunden (i.d.R. z.B. Behörden), die akzeptieren die Installation genau aus diesem Grunde nicht anderswo.

Die Problematik mit den ganzen Verzeichnissen habe ich übrigens so gelöst, dass ich in den meisten meiner Programme einen Dialog "Information über Verzeichnispfade" unter dem Hilfe-Eintrag habe. So sieht jeder Kunde direkt, wo welche Daten gespeichert werden und kann von dort auch in das jeweilige Verzeichnis springen, um z.B. eine Programmeinstellungsdatei zu sichern.

arnof 11. Aug 2014 17:08

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
In dem Thema geht es ja um MacOSX, da gehören die Daten zum Programm wegen der Sandbox.

arnof 11. Aug 2014 17:12

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
@HS

hast Du schon erfolgreich inApp für den mac hinbekommen ?

Wenn ja hast Du eine Ahnung, wie das geht ? Ich zahl auch ein paar Stunden für die Anleitung!

Harry Stahl 11. Aug 2014 18:08

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Zitat:

Zitat von arnof (Beitrag 1268366)
@HS
hast Du schon erfolgreich inApp für den mac hinbekommen ?

Ich würde Dir gerne weiterhelfen, jedoch habe ich mich noch nicht mit diesem Thema beschäftigt (mangels eigener Notwendigkeit), daher muss ich im Moment leider passen.

ZeroX1337 12. Aug 2014 06:45

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
Zitat:

Zitat von arnof (Beitrag 1268247)
Exited with code:1

Die Fehlermeldung scheint wohl immer aufzutreten wenn irgendwas nicht klappt. Bei mir war es nämlich das Problem, dass ich ohne Apple-Entwickler Lizenz das Programm nicht auf meinem Gerät ausführen konnte. Als Fehlermeldung habe ich ständig diese bekommen. :D

danielmagin 12. Aug 2014 11:43

AW: Mac OS X -> Ohne Delphi keine Funktion ?
 
[QUOTE=arnof;1268283]
Zitat:

Zitat von Harry Stahl (Beitrag 1268258)
......

iOS und Android sollte/darf man keine Dateien in Programmverzeichnis legen, sondern ins Dokumentverzeichnis!

für iOS nur teilweise korrekt:

a:
ins Dokumenten Verzeichnis kommen die Dateien die auch mit iTunes oder iCloud mit in den Backup dürfen. jedoch gibt es eine Einschränkung. Bei einem Update z.B. durch den Appstore werden diese Dateien nicht ersetzt (auch wenn im update neuere sind) da diese existieren. Es sind Benutzer Dokumente

b:
ins temp Verzeichnis kommt alles was das iOS auch löschen könnte wenn es platz braucht. ach ja kein update durch itunes oder iCloud

c:
ins libraray kommen Dokumente die auch im backup mit drinn sind und durch einen update auch überschrieben werden (siehe a)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 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