Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Не прибавляется символ к строке


Автор: МIФ 8.8.2009, 13:51
вот фрагмент кода
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Spin;

type
  TForm1 = class(TForm)
    KolSim: TSpinEdit;
    ColPas: TSpinEdit;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var nab:set of byte;
    i,j{Счетчик},sim{Сгенерированный код символа}:byte;
    s:string;//результирующая строка
begin

     for j:=1 to colpas.Value do begin
         i:=1;
         s:='';
         while i<kolsim.Value do begin
               sim:=round(random(253)+1);
               if sim in nab then begin
                 s[i]:=chr(sim);//                                      ВЫДЕЛЕННАЯ СТРОКА С ОШИБКОЙ
                  i:=i+1
               end;
         end;
         memo1.Lines.Add(s);
     end;
end;

end.


на выделенной строке вылетает ошибка.http://ipicture.ru/Gallery/Viewfull/21963384.html
не могу понять в чем ее причина

Автор: THandle 8.8.2009, 14:27
МIФ, значение в SpinEdit до которого ты едешь в цикле While может быть довольно большим(соответтвенно и i будет большим), а длина строки максимум 3 символа. Вот и вылезаешь за границы.

Автор: МIФ 8.8.2009, 14:59
THandle, Spinedit y меня от 1 до 16. ошибка вылетает при i=1.


P.S. На сколько я помню String дает 255 символов, а не 3?

Автор: Romikgy 8.8.2009, 15:31
Цитата(МIФ @  8.8.2009,  12:51 Найти цитируемый пост)
s[i]:=chr(sim);// 

на
Код

s:=s+chr(sim);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)