AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Cross-Platform-Komponenten etwickeln?
Thema durchsuchen
Ansicht
Themen-Optionen

Cross-Platform-Komponenten etwickeln?

Ein Thema von himitsu · begonnen am 22. Dez 2013 · letzter Beitrag vom 23. Dez 2013
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Cross-Platform-Komponenten etwickeln?

  Alt 23. Dez 2013, 09:59
Ganz cool, Release halt nicht Tcomponent, aber für alle Komponenten die eine Ereignisbehandling haben, Du weist schon wie ich das mine; also keine Erbsen zählen.
Was VCL betrifft kenn ich aber nur das Release am Formular. Sonst primär nur das _Release von Interfaces.
Und für das Formular ist das nur bei Nicht-Modalen nötig. Bei ShowModal sorgt die Implementierung des ShowModal dafür das die MessageQueue schon geleert ist.

Zitat:
Ja sowas in der Art meine ich. Dinger von anderen die Irgendwas irgendwann machen wo man nicht mehr Debuggen kann. Hier hat Release gute Dienste geleistet, wo ich vorher mal das Programm 100 Application.ProcessMessages laufen ließ um die Probleme in den Griff zu bekommen!
Sozusagen als Notfall-Workaround. Hoffentlich auch gut im Code dokumentiert.

Zitat:
Kann man sicher machen, ich habe nur meine Lösung aufgezeigt. Dein Beispiel was Du hier mit der Helperclasse aufgezeigt hast geht NICHT bei den Mobilen Geräten da hier der String bei 1 und nicht bei 0 anfängt!
Wieso sollte das nicht gehen. In der Doku steht:
Code:
Record helper that provides functions and properties for working with all strings, including both 1-based and 0-based strings.
Also genau für das Problem der 0 und 1-Basierten Strings.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Cross-Platform-Komponenten etwickeln?

  Alt 23. Dez 2013, 10:15
Im Detail kann ich hier nichts beitragen aber grundsätzlich hätte ich nichts gegen einen kompletten Bruch mit den Altlasten, wenn es dafür
- eine Vereinheitlichung der Konzepte und
- einfachere und bessere Programmiermöglichkeiten
gäbe.

Man hätte dann halt Delphi XEn für die Wartung alter Projekte und Delphi XY für neue, hypergeile Neuprojekte.

Hier so, dort so und vielleicht doch wieder anders ist eher verwirrend...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Cross-Platform-Komponenten etwickeln?

  Alt 23. Dez 2013, 10:28
Im Detail kann ich hier nichts beitragen aber grundsätzlich hätte ich nichts gegen einen kompletten Bruch mit den Altlasten, wenn es dafür
- eine Vereinheitlichung der Konzepte und
- einfachere und bessere Programmiermöglichkeiten
gäbe.

Man hätte dann halt Delphi XEn für die Wartung alter Projekte und Delphi XY für neue, hypergeile Neuprojekte.

Hier so, dort so und vielleicht doch wieder anders ist eher verwirrend...
Kann man jetzt schon machen. Delphi XEn für Altprojekte und Oxygene für neu Projekte (Oder bei MS: VB für Altprojekte und VB.NET für Neuprojekte)

Ich denke ein schneller harter Schnitt ist zu viel. Hier sollte schon die Möglichkeit geben bestehenden Code über 3-4 Versionen auf eine neue Basis zu heben.
Emba muss nur halt den Schnitt durchziehen Altlasten auch wirklich abzukünden. So ist ein Mitgeschleppte BDE als Beispiel nicht gerade animieren überhaupt diese Altlasten im Code anzugehen wenn man weiß das es doch nicht rausgeschmissen wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#14

AW: Cross-Platform-Komponenten etwickeln?

  Alt 23. Dez 2013, 12:44
Das Release ist kein Allheilmittel. Es wird nur "manchmal" benötigt, da nach dem Ausführen von "abhängigen" Events nochmals auf die Form/Komponente zugegriffen wird und wenn man die Form vorher Freigibt, dann knallt es nunmal danach.
Release sendet dagegen nur eine "Schließ dich"-Message, welche dann "irgendwann" später ausgelöst wird, sobald die Verarbeitung bei der Message vorbei kommt.

Delphi-Quellcode:
Form.Release;
...
Application.ProgressMessages;
...
greif jetzt nochmal auf Form zu und es knallt
Delphi-Quellcode:
Form.Release;
...
erstelle modalen Dialog (z.B. ShowMessage), welcher sich an die ActiveForm hängt, was eventuell immernoch die "Form" ist, da sie noch existiert
...
Die Form wird später freigegeben, nimmt den Dialog mit in den Abgrund und du wunderst dich, warum der Dialog nicht angezeigt wird, bzw. nur ein paar Millisekunden da ist, falls er noch Zeit hat sich zu zeichnen




Selbst bei diesen Helpern darf man nicht mit festen Indize arbeiten.

Der TStringHelper hat "diesbezüglich" absolut keinen Vorteil geüber den "normalen" Funktionen, außer daß dort diese alten Funktionen als Methoden direkt am String hängen.

Aber, so erwischt man wenigstens ncith die falsche Funktion.
für UnicodeString muß man weiterhin die Ansi-Funktion verwenden (AnsiSameText), wärend die SameTextFunktion nur für ASCII funktioniert und man für ANSI erstmal die AnsiStrings-Unit einbinden muß, wo es eine weitee Real-AnsiSameText-Funktion findet.


Man muß sich aber dennoch die Char-Indize durchgehend über die Helper besorgen und auch an diesen weitergeben, also genauso, wie bei den Funktionen, halt via Low den Anfang, sonst stimmt der Index nirgendwo.



0 oder 1

- Also Entweder man entwickelt nun alles neu und macht es gleich X-Plattform-fähig
- oder man entwickelt nur das aktuell Wichtige nurr für Mobil neu und hat dann zwei Versionen zu pflegen
- oder man CompilerSwitcht seine Mobile-Anwendung auf 1, kann den Altcode weiterverwenden, hat seine neue Anwendung damit so an altcode gebunden, daß man sie nicht mehr auf Neu zurückstellen kann.

Oder seh ich das jetzt falsch?


Man hätte dann halt Delphi XEn für die Wartung alter Projekte und Delphi XY für neue, hypergeile Neuprojekte.

Hier so, dort so und vielleicht doch wieder anders ist eher verwirrend...
Joar, es ist verwirrend, aber ohne "bezahlbare" Versionen sind bei einem harten Schnitt dann nahezu alle Hobby-Projekte schlagartig tot, was vorallem bei vielen FreeWare-Komponenten sich bestimmt nett auswirken würde und damit vermutlich auch das eine oder andere kommerzielle Projekt mitreisen täte, welches auf derartige Komponenten gesetzt hatte.

Dieses Schwammige 0-1-Problemchen lässt sich ja noch lösen.

Bei den Objektreferenzen muß ich noch schauen ob/wie sich das lösen läst.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (23. Dez 2013 um 12:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Cross-Platform-Komponenten etwickeln?

  Alt 23. Dez 2013, 15:51
Das Release ist kein Allheilmittel. Es wird nur "manchmal" benötigt, da nach dem Ausführen von "abhängigen" Events nochmals auf die Form/Komponente zugegriffen wird und wenn man die Form vorher Freigibt, dann knallt es nunmal danach.
Das ist aber dann ein 1a Programmierfehler. Für sowas hängt man sich in den Notifier-Event des Formulars und man bekommt mit wenn das Formular freigegeben wird (oder mit neuen Compiler würde man eine Weak-Referenz nehmen).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz