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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 20:37   #1
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию из Edit в StringGrid

вот моя процедура:

Код:
procedure TForm2.Button1Click(Sender: TObject);
var
  i,str: integer;
begin
if (edit1.Text='') or (Edit2.Text='') then
  begin
    showmessage('Данные не введены...');
    exit
  end
else
begin
  form1.mainStringGrid.RowCount:=form1.mainStringGrid.RowCount+1;
  form1.mainStringGrid.Col:=0;
  form1.mainStringGrid.SetFocus;
  form1.mainStringGrid.Cells[0,str]:=form2.Edit1.Text;
  form1.mainStringGrid.Cells[1,str]:=form2.Edit2.Text;
  str:=str+1;
  close;
end;
  form2.edit1.Clear;
  form2.edit2.Clear;
end;
компилируется без проблем, в работе никаких ошибок не выдаёт, всё чётко, НО - данные из строк редактирования в ячейки не передаются... новая строка ( form1.mainStringGrid.RowCount:=form 1.mainStringGrid.RowCount+1) добавляется, фокус в первый столбец ставится, а данные не вносятся... к\помогите решить эту проблему кто может...
Xeon332 вне форума
Старый 23.05.2009, 20:48   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А чему как у вас str проинициализирована? Я смотрю, что вы к ней прибавляете единицу, а начальное значение у нее какое? И потом, вам всего лишь надо из двух edit-ов внести данные в две ячейки stringgrid?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 23.05.2009, 20:50   #3
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

У локальной переменной str при входе в процедуру не определено значение и неизвестно на какую строку указывает индекс ([0, str] и [1, str]).
Необходимо инициализировать значение переменной str перед ее применением.
Скандербег вне форума
Старый 23.05.2009, 20:53   #4
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

спасибо за помощь. всё заработало!
Xeon332 вне форума
Старый 24.05.2009, 08:47   #5
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

вот такой ещё вопрос:


вот есть 2 столбца...
вобщем надо перебрать все элементы второга столбца и затем определить минимальный и вывести его в label... прошу помочь.
Xeon332 вне форума
Старый 24.05.2009, 09:17   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Попробуйте завести какую-нибудь переменную и с ней сравнивать значения из столбца. Для получения значений из столбца сделайте цикл, который бы пробегал по всем строкам второго столбца и искал там максимальный элемент. К сожалению, не могу в справке по Delphi посмотреть какая функция ищет максмальный элемент, т.к. у мну Vista. Думаю, что мысль я Вам подал.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 24.05.2009, 09:57   #7
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

недопонимаю смысл этой переменной. ей же надо будет присовить значение, и потом это значение будет сравниваться с значениями строк 2-го столбца... какое ж тогда значение необходимо присаивать? вот тут не пойму...
Код:
for j=0 to mainstringgrid.colcount - 1
далее я думаю условный оператор надо использовать, но что в нём сравнивать не пойму...
Xeon332 вне форума
Старый 24.05.2009, 10:07   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Попробуй это
Код:
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
StringGridl: TStringGrid;

procedure ButtonlClick(Sender: TObject); private
{ Private declarations ) 

public
{ Public declarations } 

end;


var
Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.ButtonlClick(Sender: TObject);

const
SIZE=5;

var
a:array[l..SIZE]of integer; // массив целых 
min:integer; // номер минимального элемента массива 
i:integer; // номер элемента, сравниваемого с минимальным 

begin
// ввод массива for i:=1 to SIZE do

a[i]:=StrToInt(StringGridl.Cells[i-1,0]);

// поиск минимального элемента 

min:=1; // пусть первый элемент минимальный 
max:=1;
for i:=2 to SIZE do

if a[i]< a[min]then min:=i
else
if a[i]> a[max]then max:=i
// вывод результата 

label2.caption:='Минимальный элемент массива:'
+IntToStr(a[min] +#13+'Номер элемента:'+ IntToStr(min);
label3.caption:='Макс. элемент массива:'
+IntToStr(a[max] +#13+'Номер элемента:'+ IntToStr(max);
end;

end.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 24.05.2009, 14:31   #9
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

спасибо огромное! прояснилось.
Xeon332 вне форума
Старый 24.05.2009, 18:18   #10
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

Ребят, вот такой ещё вопрос... даже не вопрос, а крик отчаяния)))
всё работает прекрасно, можно сказать, но проблема с типами данных...

вообщем во втором столбце у меня содержатся данные нецелочисленного типа. в принципе всё нормально до момента когда необходимо найти минимальный и максимальный элемент этого столбца.

вот код, который это делает и который вы мне подсказали:
Код:
procedure TForm1.val_infoClick(Sender: TObject);
const
size=5;
var
a: array[1..size] of integer;
min: integer;
max: integer;
i: integer;
begin
for i := 1 to size do
  a[i]:=StrToInt(mainStringGrid.Cells[1,i-1]);
min:=1;
max:=1;
for I := 2 to size do
  if a[i]<a[min] then min:=i
  else
  if a[i]>a[max] then max:=i;

form3.label7.Caption:=intTostr(a[min]);
end;

вообщем при нажатии на кнопку программа вылетает ссылаясь на то, что число (в моём случае это первое попавшееся нецелочисленное) не корректно ддля типа int. Ну по свежим следам поменял тип данных переменных в вышеуказанной процедуре(сделал его нецелочисленным) - не помогло... по идее ж в ячейках содержатся строки, потом функциями преобразования они преобразовываются в нужный тип и т.д.. Но в данном случае чего-то не выходит...

помогите: как "обойти" проблему несоответствия типов данных...
Xeon332 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Edit Simon..14 Общие вопросы C/C++ 2 27.01.2009 21:25
Edit vs StringGrid artemavd Общие вопросы Delphi 3 13.07.2008 11:56
Edit мы StringGrid artemavd Общие вопросы Delphi 0 12.07.2008 13:50
Вывод столбцов StringGrid в Edit ***СкаЙ*** Помощь студентам 1 04.05.2007 08:16
Заполнение StringGrid из Edit Инна Помощь студентам 13 03.05.2007 13:44