La siguiente función divide una palabra dado un largo, la división la realiza agragandole el salto de linea (#13#10). El tamaño de la división no sera exacto como el largo, se tomara en cuenta el siguiente espacio.
procedure SepararPalabras(Largo: Integer; var Palabra: String); var cTemp: String; nIdx, SumaLargo, LargoActual: Integer; begin //Verifica que la palabra sea mayor que la cantidad por linea if Length(Palabra) > Largo then begin cTemp := ''; SumaLargo := 0; //Recorre la palabra para ir diviendola while SumaLargo < Length(Palabra) do begin //Verifica si el caracter actual es espacio if (Copy(Palabra, SumaLargo + Largo, 1) = ' ') then //Actual //toma el largo donde debe ir LargoActual := Largo else begin //Calcula el proximo espacio if Pos(' ', Copy(Palabra, SumaLargo + Largo, Length(Palabra))) > 0 then //Si hay un espacio LargoActual := Largo + Pos(' ', Copy(Palabra, SumaLargo + Largo, Length(Palabra))) - 1 else //Llega al final de la palabra LargoActual := Length(Palabra) - SumaLargo + 1; end; //Divide la palabra un LARGO a la vez cTemp := cTemp + Trim(Copy(Palabra, (SumaLargo), LargoActual)); //Acumula los largos SumaLargo := SumaLargo + LargoActual; //Agrega el salto de linea cTemp := cTemp + #13#10; end; //Devuelve la palabra completa Palabra := cTemp; end; //Verifica que la palabra sea mayor que la cantidad por linea end;