Ну правильно. Где второе условие на длинну строки?
Код:
if Length(Edit1.Text) > 23 then begin
for i:=length(Edit1.Text) downto 1 do
if (Edit1.Text[i]= ' ') And (i >= 23) then
Edit2.Text := copy(Edit1.Text, i+1, Length(Edit1.Text)-i);
Но тут еще один подводный камень, если после переноса встретится еще один пробел, то будет опять перенос. Вообще, я бы решал проблему так:
1. Делаем функцию, которая реализует перенос по нужной длинне и возвращает результат как список строк.
2. В месте вызова уже используем результат.
Код:
procedure stringSplit(S : String; SplitLen : Integer) : TStringList;
var
I : Integer;
Buf : String;
begin
Result := TSTringList.Create;
Buf := '';
For I := 1 To Length(S) Do
Begin
If (S[i] = ' ') And (I >=SplitLen)
Then
Begin
Result.Add(Buf);
Buf := '';
End
Else
Buf := Buf + S[i];
End;
If Buf <> '' Then Result.Add(Buf);
end;
Ну и пример использования:
Код:
S := '...'; // тут типа длинная строка задается
SL := stringSplit(S,23);
Edit1.Text := SL[0];
If SL.Count>1 Then Edit2.Text := SL[1] Else Edit2.Text := '';
SL.Free; // не забываем освободить память...
PS. Вообще, обычно такого рода перенос делается по длинне, меньшей, чем указанная, но там код посложнее будет, хотя тоже не самая сложная задача...