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.