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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2010, 14:47   #21
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
vityanya
Сделай так как сказал я, и забудь про образмеривание массивов в циклах вручную.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2010, 14:48   #22
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию

ммм.... вот ща нашел его заполнение массива...

Код:
procedure TForm2.Addclient;
begin
count:=count+1;
setlength(cln,count+1);
cln[count-1].sur:=form3.edit1.text;
cln[count-1].n:=form3.edit5.text;
cln[count-1].otch:=form3.edit6.text;
cln[count-1].kol:=strtoint(form3.edit7.text);
cln[count-1].ph:=strtoint(form3.edit11.text);
if form3.RadioButton1.Checked=true then
cln[count-1].sex:='ì';
if form3.RadioButton2.Checked=true then
cln[count-1].sex:='æ';
if cln[count-1].kol>50 then
cln[count-1].skid:=40
else
cln[count-1].skid:=0;
clearlist;
end;
зачем прописывается count-1 ? и в чем разница между моим заполнением?

Код:
procedure TForm1.Add2;
begin
n:=n+1;
setlength(comp1,n+1);
Comp1[n].user:=Form2.Edit1.Text;
Comp1[n].seans:=Form2.Edit2.Text;
try
Comp1[n].vr:=StrtoFloat(Form2.Edit3.Text);
except
ShowMessage('Ââåäèòå ÷èñëî');
end;
try
Comp1[n].tar:=StrtoFloat(Form2.Edit4.Text);
except
showMessage('Ââåäèòå ÷èñëî');
end;
try
Comp1[n].stkons:=StrtoFloat(Form2.Edit5.Text);
except
showMessage('Ââåäèòå ÷èñëî');
end;
try
Comp1[n].skid:=StrtoFloat(Form2.Edit6.Text);
except
showMessage('Ââåäèòå ÷èñëî');
end;
end;

Последний раз редактировалось vityanya; 03.08.2010 в 14:50. Причина: добавление
vityanya вне форума Ответить с цитированием
Старый 03.08.2010, 14:50   #23
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
зачем прописывается count-1 ?
Потому что динмассив начинается не с единице как в Паскале а с нуля как в Си
Поэтому от кол-ва элементов отнимается 1
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2010, 14:50   #24
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Потому что индексы начинаются с 0! A первое выполнение count:=count+1; даёт 1!!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 03.08.2010, 15:16   #25
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию

Цитата:
и в чем разница между моим заполнением?
непонятно(((
vityanya вне форума Ответить с цитированием
Старый 03.08.2010, 15:28   #26
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
count:=count+1;
setlength(cln,count+1);
Мне тоже не понятно... Зачем эту глупость писать, в массиве получается один элемент лишний.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2010, 19:00   #27
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию

Цитата:
Stilet
я без этого написал, все работает, добавляет звапись в стринггрид... но вот сохраняет чушь какую то:
Цитата:
9 9 "@ "@ "@ "@
вот так отображюатся в текстовике введенные мною шесть 9-ток
vityanya вне форума Ответить с цитированием
Старый 03.08.2010, 19:02   #28
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию

я вроде понял... у меня первые два эдлемента строковые в массиве, он их отображает 9-тками... а остальное в том числе 7-ой элемент- это сумма... он отображает в виде "@
vityanya вне форума Ответить с цитированием
Старый 03.08.2010, 19:18   #29
vityanya
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 23
По умолчанию

вот мой массив заполняется:

Код:
procedure TForm1.Add2;
begin
setlength(comp1,n+1);
Comp1[n-1].user:=Form2.Edit1.Text;
Comp1[n-1].seans:=Form2.Edit2.Text;
try
Comp1[n-1].vr:=StrtoFloat(Form2.Edit3.Text);
except
ShowMessage('Ââåäèòå ÷èñëî');
end;
try
Comp1[n-1].tar:=StrtoFloat(Form2.Edit4.Text);
except
showMessage('Ââåäèòå ÷èñëî');
end;
try
Comp1[n-1].stkons:=StrtoFloat(Form2.Edit5.Text);
except
showMessage('Ââåäèòå ÷èñëî');
end;
try
Comp1[n-1].skid:=StrtoFloat(Form2.Edit6.Text);
except
showMessage('Ââåäèòå ÷èñëî');
end;
end;
вот он выводит данные в стринггрид:

Код:
procedure TForm1.print;
begin
stringgrid1.ColCount:=8;
stringgrid1.cells[1,p]:=Comp1[n-1].user;
stringgrid1.cells[2,p]:=Comp1[n-1].seans;
stringgrid1.cells[3,p]:=floattostr(Comp1[n-1].vr);
stringgrid1.cells[4,p]:=floattostr(Comp1[n-1].tar);
stringgrid1.cells[5,p]:=floattostr(Comp1[n-1].stkons);
stringgrid1.cells[6,p]:=floattostr(Comp1[n-1].skid);
stringgrid1.cells[7,p]:=floattostr(Comp1[n-1].tar*Comp1[n-1].vr+Comp1[n-1].stkons-(Comp1[n-1].tar*Comp1[n-1].vr)*(Comp1[n-1].skid/100));
end;
Вот процедура сохранения в файл:

Код:
procedure Tform1.save;
var cp:file of tcomp;
begin
if savedialog1.Execute then begin
assignfile(cp, savedialog1.filename);
rewrite(cp);
for j:=1 to n do
write(cp,Comp1[j-1]);
closefile(cp);
end;
end;
во процедура открытия:

Код:
procedure TForm1.load;
 var cp:file of tcomp;
 begin
 if OpenDialog1.Execute then begin
 assignfile (cp,OpenDialog1.filename);
 reset(cp);
 i:=0;
 while not(eof(cp)) do begin
 i:=i+1;
 setlength(Comp1, i);
 read(cp,Comp1[i-1]);
 end;
 closefile(cp);
 end;
 print;
end;
что где не так???(((
vityanya вне форума Ответить с цитированием
Старый 03.08.2010, 22:57   #30
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вот тут как то писал сохранение и загрузку из стринг грида
Нужно чуть изменить
http://programmersforum.ru/showthread.php?t=56987#8
psycho-coder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CppWEbBrowser. Запрет на открытие нового окна, и открытие его в том же окне Askar_g Общие вопросы C/C++ 4 25.06.2011 20:00
Файл rundll32.exe - Очень нужна помощь. Nuvi Windows 14 03.12.2009 16:33
Нужна помощь по вставке изображения путем VBA ACCESS в файл EXCEL AlVBA Microsoft Office Access 2 18.05.2009 15:58
Запись в файл в Delphi, нужна помощь s-t-r-i-k-e-r Помощь студентам 5 03.06.2008 19:11
Нужна помощь(Разработать алгоритм, нарисовать его блок-схему.) miron Помощь студентам 4 26.02.2008 12:08