Hallo,
das kann nicht gehen:
y:= StrToInt(Copy(Edit1.Text,0,1));
Ein String fängt bei 1 an und nicht bei 0 (bzw. in Pascal steht/stand im nullten Byte die Länge des Strings, das ist hier aber sicherlich nicht der gewünschte Wert).
Vorschlag:
y:= StrToIntDef(Copy(Trim(Edit1.Text),1,1),1);
Zuerst mal alle Leerzeichen wegwerfen (Trim).
Vom Rest das erste Zeichen nehmen (Copy 1,1).
Wenn das schief geht wird eine 1 geliefert (StrToIntDef)
Der Vorgabewert kann natürlich geändert werden.
Am Besten am Anfang von Button1Click eine Fehlerprüfung einbauen:
Delphi-Quellcode:
Edit1.Text := Trim(Edit1.Text);
If Edit1.Text = '' then begin
ShowMessage('Bitte irgendwas in Edit1.Text eingeben.');
Exit;
end;
If StrToIntDef(Edit1.Text,-99) = -99 then begin
ShowMessage('Bitte eine Zahl in Edit1.Text eingeben.');
Exit;
end;
Alternativ statt TEdit ein TMaskEdit benutzen, das kann so konfiguriert werden, dass nur Zahlen eingegeben werden können. Spart den Ärger mit nicht in Zahlen umzuwandelnde Zeichen, die Prüfung auf Leerstring sollte aber auch bei TMaskEdit erfolgen.
Warum
Memo1.Text := Pchar(Memo1.Text + 'a');
Memo1.Text := Memo1.Text + 'a';
reicht vollkommen aus.