Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2014, 22:38   #41
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
В принципе, ИМХО, можно ещё так сделать:
Угу, проще
Код:
// Изначально Button2.Enable=False

const cText1: array[1..3] of String =
              ('Текст1 Текст1 Текст1',
               'Текст2 Текст2 Текст2 Текст2',
               'Текст3 Текст3');

var Number: Integer = Low(cText1)-1;

procedure TForm1.SaveToMemo;
begin
  Memo1.Text:=cText1[Number];
  Button1.Enabled:=Number<High(cText1);
  Button2.Enabled:=Number>Low(cText1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Inc(Number);
  SaveToMemo;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Dec(Number);
  SaveToMemo;
end;
Цитата:
'Текст1 строка1'+#13#10+'Текст1 строка2'+#13#10+'Текст1 строка3'
Такое и без сложения катит
Код:
'Текст1 строка1'#13#10'Текст1 строка2'#13#10'Текст1 строка3'
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 05.04.2014 в 22:43.
Аватар вне форума Ответить с цитированием
Старый 05.04.2014, 23:31   #42
=_=Настя=_=
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 36
По умолчанию

Аватар, а в чем проблема, нажимаю вперед 1 раз появляется "Текст1 Текст1 Текст1" и кнопка "вперед" блокируется, а когда нажимаю Назад, начинают вообще какие то не понятные буквы и символы появляются.
=_=Настя=_= вне форума Ответить с цитированием
Старый 05.04.2014, 23:55   #43
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Мне то откуда знать что у вас за проблема. Наверно что-то не так скопипастели
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.04.2014, 00:16   #44
=_=Настя=_=
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Мне то откуда знать что у вас за проблема. Наверно что-то не так скопипастели
нет все так
=_=Настя=_= вне форума Ответить с цитированием
Старый 06.04.2014, 00:22   #45
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от =_=Настя=_= Посмотреть сообщение
нет все так
Что всё и что так?
Я уже писал выше, что без Вашего кода понять в чём проблема, мягко говоря, сложновато. Поэтому, Ваш код в студию!
Streletz вне форума Ответить с цитированием
Старый 06.04.2014, 00:46   #46
=_=Настя=_=
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Что всё и что так?
Я уже писал выше, что без Вашего кода понять в чём проблема, мягко говоря, сложновато. Поэтому, Ваш код в студию!
Код:
unit Unit3;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Layouts, FMX.Memo;

type
  TForm3 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
     procedure SaveToMemo;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.fmx}

{ TForm3 }

const cText1: array[1..3] of String =
              ('Текст1 Текст1 Текст1',
               'Текст2 Текст2 Текст2 Текст2',
               'Текст3 Текст3');

var Number: Integer = Low(cText1)-1;

procedure TForm3.Button1Click(Sender: TObject);
begin
  Dec(Number);
  SaveToMemo;
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
  Inc(Number);
  SaveToMemo;
end;

procedure TForm3.SaveToMemo;
begin
  Memo1.Text:=cText1[Number];
  Button1.Enabled:=Number<High(cText1);
  Button2.Enabled:=Number>Low(cText1);
end;

end.
=_=Настя=_= вне форума Ответить с цитированием
Старый 06.04.2014, 01:14   #47
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
Радость

Совсем другое дело!
Проблема была в том, что, к сожалению, FireMonkey, в отличие от VCL, не всегда корректно работает с массивами.
Код, выложенный в теме, был сделан для VCL. Поэтому, если там всё работает, то здесь возникают ошибки.
В общем, вот исправленный код FireMonkey. Теперь, по идее, должен нормально работать. Исправленные строки подчёркнуты.
Код:
unit Unit4;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs,
  FMX.StdCtrls, FMX.Layouts, FMX.Memo;

type
  TForm4 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    procedure SaveToMemo;
  public

  end;
const
cText1: array[1..3] of String =
              ('Текст1 Текст1 Текст1',
               'Текст2 Текст2 Текст2 Текст2',
               'Текст3 Текст3');
var
  Form4: TForm4;
  Number: Integer = 0;

implementation

{$R *.fmx}

{ TForm4 }

procedure TForm4.Button1Click(Sender: TObject);
begin
  Dec(Number);
  SaveToMemo;
end;

procedure TForm4.Button2Click(Sender: TObject);
begin
  Inc(Number);
  SaveToMemo;
end;

procedure TForm4.SaveToMemo;
begin
  Memo1.Text:=cText1[Number];
  Button1.Enabled:=(Number>1) and (Number<=Length(cText1));
  Button2.Enabled:=(Number>=0) and (Number<Length(cText1));
end;

end.
P.S. Этот баг был в FireMonkey и в более ранних версиях. Однако, судя по всему, даже с выходом XE5, разработчики его так и не устранили.
Streletz вне форума Ответить с цитированием
Старый 06.04.2014, 08:30   #48
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
FireMonkey, в отличие от VCL, не всегда корректно работает с массивами.
Неожиданно О_о
Я думал что FM это просто двигло для красоты формы, но никак не ядро или фреймворк. С чего это он в менеджер памяти лезет то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.04.2014, 08:49   #49
=_=Настя=_=
Пользователь
 
Регистрация: 05.04.2014
Сообщений: 36
По умолчанию

Streletz, спасибо большое за помощь! А можно сюда еще пару вопросов задать? Вообщем:

Почему в ex5 не работает:

Код:
application.Terminate;
=_=Настя=_= вне форума Ответить с цитированием
Старый 06.04.2014, 09:17   #50
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Все там работает. Почему ты решила что не работает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi xe5 + android + BD MAZADA БД в Delphi 2 05.02.2014 10:14
Разработка приложения на Android Roscoe Фриланс 3 27.11.2013 23:37
Разработка приложения на Android BioVR Фриланс 5 26.11.2013 15:03
Delphi XE5: Android рисовалка lamer811 Общие вопросы Delphi 1 21.11.2013 19:13
Delphi XE5 +Android приложения furstenberg Общие вопросы Delphi 4 30.10.2013 11:09