Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.02.2014, 00:47
GrabbeR GrabbeR вне форума
Новичок
 
Регистрация: 15.03.2012
Сообщения: 54
Версия Delphi: 7
Репутация: 10
По умолчанию Memo +

При нажатии на button1 получается результат в memo:
| 1
| 2
| 3
| 4
| 5
| 6
а нужно так:
| 1 | 4
| 2 | 5
| 3 | 6

Как сделать?)

Код:
  private
    Edits:array[1..3,1..1] of TEdit;
    Edits2:array[1..3,1..1] of TEdit;
    Results:array[1..3,1..1] of integer;
    Results2:array[1..3,1..1] of integer;
  public
    ...
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
const
  StartIndex:array[1..3]of integer=(1,2,3);
  StartIndex2:array[1..3]of integer=(4,5,6);
var
  i,j, i2,j2: Integer;
begin
  for i:=1 to 3 do
    for j:=1 to 1 do
      Edits[i,j]:=TEdit(FindComponent('Edit'+Inttostr((StartIndex[i]+j-1))));

  for i2:=1 to 3 do
    for j2:=1 to 1 do
      Edits2[i2,j2]:=TEdit(FindComponent('Edit'+Inttostr((StartIndex2[i2]+j2-1))));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j, i2, j2: Integer;
  StrResult, StrResult2, s, s2 : String;
begin
Label1.Caption := '1';

  Button2Click(nil);
  StrResult := '';
  StrResult2 := '';
//--------------
  for j := 1 to 3 do
  begin
    s := '';
    for i := 1 to 1 do
      s := s + ' | ' + IntToStr(Results[j, i]);
   StrResult := StrResult + s + #13#10;
  end;
  for i := 1 to 3 do
    for j := 1 to 1 do
      Results[i, j] := 0;
//--------------
  for j2 := 1 to 3 do
  begin
    s2 := '';
    for i2 := 1 to 1 do
      s2 := s2 + ' | ' + IntToStr(Results2[j2, i2]) + ' | ' + IntToStr(Results[j, i]);
    StrResult2 := StrResult2 + s2 + #13#10;
  end;
  for i2 := 1 to 3 do
    for j2 := 1 to 1 do
      Results2[i2, j2] := 0;
//--------------
Memo1.Lines.Text := StrResult2;
//Memo2.Lines.Text := ;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i,j, i2,j2: Integer;
begin
Label1.Caption:=IntToStr(StrToInt(Label1.Caption)+1);
  for i:=1 to 3 do
  begin
    for j:=1 to 1 do
    begin
      inc(Results[i,j],StrToIntDef(Edits[i,j].Text,0));
      Edits[i,j].Text:='0';
    end;
  end;

  for i2:=1 to 3 do
  begin
    for j2:=1 to 1 do
    begin
      inc(Results2[i2,j2],StrToIntDef(Edits2[i2,j2].Text,0));
      Edits2[i2,j2].Text:='0';
    end;
  end;
end;
Вложения
Тип файла: 7z 2.7z (5.7 Кбайт, 2 просмотров)
Ответить с цитированием
  #2  
Старый 25.02.2014, 06:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
const
  S : String = '123456';
var
  I : Integer;
  Buf : String;
begin
  For I := 1 To Length(S) div 2 Do
    Begin
      Buf := '|' + S[i];
      If I*2 <= Length(S) Then Buf := Buf + '|' + S[I*2];
      Memo1.Lines.Add(Buf);
    End;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
GrabbeR (25.02.2014)
  #3  
Старый 25.02.2014, 06:31
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Если принципиально использование массива, то тогда вот
Код:
...
//    Memo1: TMemo;
//    Button1: TButton;
//    Edit1: TEdit;
...

procedure TForm1.Button1Click(Sender: TObject);
var
 i, cnt: integer;
 arr: array of string; //integer;
 s: string;
begin
// Edit1.Text:= '1 2 3 4 5 6';
 cnt:= 0;

 // кол-во чисел в строке
 for i := 1 to Length(Edit1.Text) do
  if Edit1.Text[i] = ' ' then Inc(cnt);

   // инициализация массива
 SetLength(arr, cnt+1);
 s:= '';
 cnt:= 0;

  // заполнение массива
 for i:= 1 to Length(Edit1.Text) do
  begin
   if  Edit1.Text[i] <>  ' '  then s:= s + Edit1.Text[i];
   if (Edit1.Text[i]  =  ' ') or (i = Length(Edit1.Text)) then
    begin
     arr[cnt]:= s; //StrToInt(s);
     s:= '';
     Inc(cnt);
    end;
  end; {for i}

  // определяем кол-во строк в Memo1
 cnt:= Length(arr) div 2;
 if Length(arr) mod 2 > 0 then Inc(cnt); // не четный ряд

 Memo1.Clear;

  // и собсно сам лисапет с заполнением Memo
 for i := 0 to cnt-1 do
  begin

   // элемент  первого столбца
   s:= '| ' + arr[i];//IntToStr(arr[i]);
 
   // элемент колонки 2 
  if i * 2 < Length(arr)-1 then
     s:= s + ' | ' + arr[cnt+i] //IntToStr(arr[i])
    else
     s:= s + ' | '; // пустышка на случай нечётного размера
   Memo1.Lines.Add(s);
  end; {for i}
end;
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
GrabbeR (25.02.2014)
  #4  
Старый 25.02.2014, 18:24
GrabbeR GrabbeR вне форума
Новичок
 
Регистрация: 15.03.2012
Сообщения: 54
Версия Delphi: 7
Репутация: 10
По умолчанию

Спасибо, помогли разобраться следующим способом:
Код:
Memo1.Clear;
for i:=1 to 3 do
begin
  Memo1.Lines.Add(Format(' | %d | %d',[Results[i,1],Results2[i,1]]));
  Results[i,1]:=0;
  Results2[i,1]:=0;
end;
Ответить с цитированием
  #5  
Старый 02.03.2014, 12:48
kaituk kaituk вне форума
Прохожий
 
Регистрация: 20.02.2014
Сообщения: 13
Версия Delphi: Delphi
Репутация: 10
По умолчанию

Народ, там есть куда более простое решение!
Ответить с цитированием
  #6  
Старый 02.03.2014, 20:04
GrabbeR GrabbeR вне форума
Новичок
 
Регистрация: 15.03.2012
Сообщения: 54
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от kaituk
Народ, там есть куда более простое решение!
Какое же? Подскажите, пожалуйста.
Ответить с цитированием
  #7  
Старый 02.03.2014, 21:48
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:
Не подскажет, от "любителя покодить", что даже в своей теме не сподобился и строчки кода набросать, такого ждать вряд ли приходится
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter