TEdit.Text ist ein Property.
Property kann man entweder nur komplett auslesen oder beschreiben.
(nur Objekte sind indirekt eine Ausnahme, wobei das eigentlich Zeiger sind und auch hier der Zeiger nur koplett befüllt werden kann, aber das referenzierte Objekt natürlich eigenständig ist)
Edit2.Text[h] liest praktisch das Property i eine temporäre Stringvariable aus und [h] graift dann auf ein Zeichen in der Kopie zu.
Lösung: Vorher .Text in eine eigene Stringvariable auslesen/kopieren, dort bearbeiten und dann am Ende komplett zurückschreiben.
Bei
Edit2.Text[h]
geben sogar uralte Delphis eine Fehlermeldung zurück, so wie du es bekommen hast, denn ein Teil-Property ist eben nicht beschreibbar.
Bei Records, als Property gab es lange Zeit ein Problem, wo der Compiler früher keine Fehlermeldung ausgab und den Schreibzugriff auf die Kopie ohne Fehlermeldung zuließ, nur daß diese Änderungen eben nie im Property angekommen sind. (das hat man inzwüschen zum Glück behoben)
PS: viele gleiche IFs = ein CASE
Wobei ja schon angemerkt wurde, daß es hier eine regelmäßige Gesetzmäßigkeit gibt, welche man mathematisch ausnutzen kann.
Aber das die Groß- und Kleinbuchstaben ordinal nicht direkt zusamenhängen, womit man es nicht zusammenhängend berechnen kann.
Ein CASE über die 4 Teilbereichen ("A" bis "Y", "Z", "a" bis "y" und "z") unterteilen und jeweils eine Berechnugn dafür.
Zitat:
If Edit2.text[h]='z' Then Edit2.text[h]:='a';
Sicher daß du ein kleines A meinst?
Ein Therapeut entspricht 1024 Gigapeut.