Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка в программе 
:(
    Опции темы
Гость_Олег
Дата 23.5.2004, 18:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте, уважаемые единомышленники!
Вопрос «чайника»: уже долгое время не могу написать такую простенькую прогу, условие которой:
В таблицу заносятся сведения о сотрудниках организации по формату: фамилия, имя, отчество, заработная плата. Разработать прогу для сортировки сведений о сотрудниках по заработной плате – в первой строке должен стоять сотрудник с самой высокой з/п. Задачу нужно решить с использованием типа данных Запись и через динамический массив.
Вот код, в котором никак не могу найти ошибку:
{$R *.dfm}
type
TEmploy = record
Familie : string;
Name : string;
Otchestvo : string;
Zp :real;
end;
TEmployArr = array of TEmploy;
//...
var
Re: TEmployArr;


procedure TForm1.N1Click(Sender: TObject);
var
X,Y,K,I:Integer;

begin
for i:=1 to Tab1.RowCount do
if Length(Tab1.Cells[0,i])<>0 then
k:=k+1;
X:=Tab1.FixedCols;// нам не нужны те колонки, которые фиксированы
SetLength(Re,K);
For Y:=Tab1.FixedRows to K do{ Нам не нужны фиксированые строки}
Begin
Re[Y-Tab1.FixedRows].Familie:=tab1.Cells[X+0,Y];
Re[Y-Tab1.FixedRows].Name:=Tab1.Cells[X+1,Y];
Re[Y-Tab1.FixedRows].Otchestvo :=Tab1.Cells[X+2,Y];
Re[Y-Tab1.FixedRows].Zp :=StrToFloat(Tab1.Cells[X+3,Y]);

end;
end;

procedure TForm1.N2Click(Sender: TObject);
var
i,K,m,r:integer;

b:TEmploy;


begin
for i:=1 to Tab1.RowCount do
if Length(Tab1.Cells[0,i])<>0 then
k:=k+1;


for r:=0 to k-1 do
begin
m:=r;
for i:=r to k-1 do
begin
if Tab1.Cells[3,i]>Tab1.Cells[3,m] then
begin
m:=i;
if r<>m Then
begin
b:=Re[r];
Re[r]:=Re[m];
Re[m]:=b;
end;
end;

end;

end;



for i:=0 to K-1 do
begin
Tab2.Cells[0,i+1]:=Re[i].Familie;
Tab2.Cells[1,i+1]:= Re[i].Name;
Tab2.Cells[2,i+1]:=Re[i].Otchestvo;
Tab2.Cells[3,i+1]:=FloatToStr(Re[i].Zp);

end;




end;


end.

Может кто подскажет, где собака зарыта???

  Вверх
z-END
Дата 23.5.2004, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



а где ошибка-то возникает?
Цитата
for i:=1 to Tab1.RowCount do
if Length(Tab1.Cells[0,i])<>0 then ...

по моему вот этот кусок нерабочий т.к. при RowCount=1 последняя ячейка будет являться не первой а нулевой cell[0,0], т.е. логично бы написать цикл так:
Код
for i := 1 to Tab1.RowCount - 1 do
  if Length (Tab1.Cells [0,i]) <> 0 then...



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.