На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Добавление в массив с помощью компонента Edit
    Пытаюсь сделать добавление в массив с помощью Edit1, полученный результат выводится в Memo. В итоге последний элемент массива не тот который я добавила последним, а другой который создается автоматически. Поэтому у меня вконце выводится совершенно разные цифры то 18, то 26, то 542, то восьмизначное значение как исправить, чтобы выводилось только мой список добавленный через Edit1? Вот код:

    ExpandedWrap disabled
      unit Unit1;
       
      interface
       
      uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
        Dialogs, StdCtrls;
       
      type
        TForm1 = class(TForm)
          Button1: TButton;
          Edit1: TEdit;
          Edit2: TEdit;
          Label1: TLabel;
          Label2: TLabel;
          Button2: TButton;
          Memo1: TMemo;
          Button3: TButton;
          procedure Button1Click(Sender: TObject);
        private
          { Private declarations }
        public
          { Public declarations }
        end;
       
      var
        Form1: TForm1;
         len: Integer;
         mas: array of integer;//динамический массив
         res: Integer = 0;
       
      implementation
       
       
       
      {$R *.dfm}
       
      procedure TForm1.Button1Click(Sender: TObject);
      var im1,i:Integer;
      begin
       
      res:= Length(mas);
      SetLength(mas, res+1);
      im1:=StrToInt(Edit1.Text);
      mas[res] := im1;
      Memo1.Clear;
       
      for i := 1 to Length(mas) do
      begin
        Memo1.Lines.Add('Элемент массива [' + IntToStr(i) + ']: ' + IntToStr(mas[i]));
      end;
       
      end;
      end.
      Массив начинается с 0 элемента
      ExpandedWrap disabled
        for i := 0 to Length(mas)-1 do
        Спасибо, помогло. Я не много изменила код и создала двухмерны массив где второй значение массива, это цифры минимум и максимум. Теперь через поля можно указывать минимальные и максимальные числа. Однако в поля можно вписать все что угодно например слова из-за чего будет появлятся ошибка, можно установить ограничения на ввод в поля только цифр?

        Код:
        ExpandedWrap disabled
          unit Unit1;
           
          interface
           
          uses
            Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
            Dialogs, StdCtrls;
           
          type
            TForm1 = class(TForm)
              Button1: TButton;
              Edit1: TEdit;
              Edit2: TEdit;
              Label1: TLabel;
              Label2: TLabel;
              Button2: TButton;
              Memo1: TMemo;
              Button3: TButton;
              procedure Button1Click(Sender: TObject);
              procedure Button2Click(Sender: TObject);
            private
              { Private declarations }
            public
              { Public declarations }
            end;
           
          var
            Form1: TForm1;
             len: Integer;
             mas: array of array of integer;//динамический массив
             res: Integer = 0;
           
          implementation
           
           
           
          {$R *.dfm}
           
          procedure TForm1.Button1Click(Sender: TObject);
          var im1,im2,i:Integer;
          begin
           
          res:= Length(mas);
          SetLength(mas, res+1,2);
          im1:=StrToInt(Edit1.Text);
          im2:=StrToInt(Edit2.Text);
          mas[res,0] := im1;
          mas[res,1] := im2;
          end;
          procedure TForm1.Button2Click(Sender: TObject);
          var i:Integer;
          begin
          Memo1.Clear;
          for i := 0 to Length(mas)-1 do
          begin
            Memo1.Lines.Add('Элемент массива [' + IntToStr(i) + ']: Мин:' + IntToStr(mas[i,0])+' Макс:'+ IntToStr(mas[i,1]));
          end;
          end;
           
          end.
          Я бы проверял через
          If trystrtoint(edit1.text) then ...
            Только цифры =) :lol:
            ExpandedWrap disabled
              procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
              begin
              if (Key in ['0'..'9',#8]) = False then
                  Key:=Chr(0);
              end;
              procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
              begin
              if (Key in ['0'..'9',#8]) = False then
                  Key:=Chr(0);
              end;
              Можно другой компонент взять для ввода , TMaskEdit.
              Маску поставить типа
              ExpandedWrap disabled
                MaskEdit1.EditMask := '00000;1;_';

              Или TSpinEdit, там в принципе только числовые значения вводятся.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0259 ]   [ 16 queries used ]   [ Generated: 27.04.24, 05:44 GMT ]