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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2014, 19:55   #31
Dilex
Пользователь
 
Аватар для Dilex
 
Регистрация: 04.11.2010
Сообщений: 76
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
потому что видно что не понимаете код, а раз так то не вы

код надо смотретьт и думать что он делает, а не гадать, вы пока гадаете
я могу вам отправить приватно ?
Dilex вне форума Ответить с цитированием
Старый 28.05.2014, 21:52   #32
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

зачем приватно? пусть все помогают..
eval вне форума Ответить с цитированием
Старый 28.05.2014, 21:59   #33
Dilex
Пользователь
 
Аватар для Dilex
 
Регистрация: 04.11.2010
Сообщений: 76
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
зачем приватно? пусть все помогают..
нужно исходник привести в нормальный вид ... мне выложить кодом ... или архив сделать ?
Dilex вне форума Ответить с цитированием
Старый 28.05.2014, 22:07   #34
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

и кто его приводить будет?
eval вне форума Ответить с цитированием
Старый 28.05.2014, 22:14   #35
Dilex
Пользователь
 
Аватар для Dilex
 
Регистрация: 04.11.2010
Сообщений: 76
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
и кто его приводить будет?
я ... вы поймите меня правильно, я не прошу делать что либо за меня, это моя работа, это должны быть мои знания, а форум это обмен знаниями в непонятных ситуациях, на ошибках учатся ... вот у меня не было практики с бинарниками ... и я хочу понять происходящее, я не сижу сложа руки ожидая что кто-то сделает это за меня ... я хочу чтобы мне объяснили как можно подробнее ... я благодарен вам, за вашу отзывчивость, взаимопонимание и помощь ...
Тот вид который имеет сейчас исходник ... эх .... да что тут говорить вы увидите сами ...
Архив программы слишком велик ... стандартным загрузчиком не залить ... тут разрешают сторонние ресурсы ? может можно вам для начала на почту скинуть ?

Последний раз редактировалось Dilex; 28.05.2014 в 22:16.
Dilex вне форума Ответить с цитированием
Старый 28.05.2014, 22:36   #36
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

про такие файлы написано столько что правнуки не смогут дочитать, даже читая без обеда

тут все просто как дважды два
запись состоит из полей, каждое поле имеет свой размер, размер записи - сумма размеров полей + спец. инфа, если есть
если открыть новый файл и записать в него запись то файл будет размером = размеру записи, если записать 5 то будет 5*размер_одной, если писят то писят*размер_одной, и так далее, что тут сложного?
чтобы не считать разер записи руками карандашом на листике, есть спец. функция sizeof(), она сама посчитает и вернет точный размер

сколько будет весить файл если в него записать 77 записей по типу zp ?
правильно 77*sizeof(zp), тут тоже ничего сложного как видите
теперь спроецируйте эти знания на ваш код
получаем:
SetFilePointer(fser,(sizeof(str_sm) +(k*sizeof(ser))),NULL,FILE_BEGIN);
ReadFile(fser,&sr,sizeof(ser),&lrea d,NULL);}

что тут не понятного?
sizeof известна, что есть к?

как 2 пальца об асфальт ..
eval вне форума Ответить с цитированием
Старый 28.05.2014, 22:51   #37
Dilex
Пользователь
 
Аватар для Dilex
 
Регистрация: 04.11.2010
Сообщений: 76
По умолчанию

Код:
void __fastcall TForm1::Disp_sm(int Nr_d)
{
char *Ns;
char *Nd;
if (!first)
	{
	 CloseHandle(fser);
	 CloseHandle(fdat);
	 CloseHandle(f_n);
	}
first=false;
UnicodeString S;
DateTimeToString(S,"ddmmyy",DateTimePicker1->DateTime);  // присвоение число/мес/год
DecodeDate(DateTimePicker1->DateTime,nYear,nMonth,nDay);
nn=0; nr.n.y= nYear%100; nr.n.d=nDay; nr.n.m=nMonth;
int  Nsm=CSpinEdit1->Value; Nsm_n=Nsm;  nr.n.sm=Nsm;   //Nsm = Номер смены 1-3

S1=S;
S="s"+S;                             //присвоение s в начало названия файла
S=S+"_"+Nsm+".dat";                  //присвоение числа даты смены и рассширения файла



S1="d"+S1;                          //присвоение d в начало названия файла
S1=S1+"_"+Nsm+".dat";               //присвоение числа даты смены и рассширения файла
Nd= AnsiString (S1).c_str();
Ns=AnsiString(S).c_str();          
//ListBox1->Clear();
rb=2;
bt1=true; bt2=false;
Button17->Enabled=false;

if ((pr_op==0)||(pr_op==1))       //
  {
   fser=CreateFile(Ns,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
   f_n=CreateFile("n.dat",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

  }
  else
  {
   fser=CreateFile(Ns,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
   f_n=CreateFile("n.dat",GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  };


fdat=CreateFile(Nd,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

 if (f_n==INVALID_HANDLE_VALUE){} else {};

 if ((fser!=INVALID_HANDLE_VALUE)&&(fdat!=INVALID_HANDLE_VALUE)
  &&(f_n!=INVALID_HANDLE_VALUE))
  {
   w_ok=true;
   PageControl1->Enabled=true;
   re1=-1; re2=-1;  re20=-1;
   pw=GetFileSize(fser,NULL);
   SetFilePointer(fser,0,NULL,FILE_BEGIN);
   ReadFile(fser,&smb,sizeof(str_sm),&lread,NULL);
   Nrul=(pw-sizeof(str_sm))/sizeof(ser);  Nt=Nrul;
   kpos=0;
   Header();
   if (Nrul>0)
	 {
	  ReadFile(fser,&srt,(sizeof(ser)*Nrul),&lread,NULL);
	  for (int i=0;i<Nrul;i++)
		 {
		  sr=srt[i];
		  ppt[i]=0;
		  Smen(i+2); Smen_pos();
  
 StringGrid19->Cells[0][0]="№";
 StringGrid19->Cells[1][0]="Толщина";
 StringGrid19->Cells[2][0]="Ширина";
 StringGrid19->Cells[3][0]="Длина";
 StringGrid19->Cells[4][0]="Вес";
 StringGrid19->Cells[5][0]="Вр.Заправки";
 StringGrid19->Cells[6][0]="Вр.Сталкивания";


		

		  StringGrid19->RowCount=Nrul+1;
		  StringGrid19->Cells[0][i+1] =  IntToStr(sr.n);
		  StringGrid19->Cells[1][i+1] =  FloatToStrF(sr.hz,ffFixed,7,2);
		  StringGrid19->Cells[2][i+1] =  FloatToStrF(sr.bz,ffFixed,7,0);
		  StringGrid19->Cells[3][i+1] =  FloatToStrF(sr.l,ffFixed,7,0);
		  StringGrid19->Cells[4][i+1] =  FloatToStrF(sr.pf,ffFixed,7,2);
		  StringGrid19->Cells[5][i+1] =  TimeToStr(sr.tz);
		  StringGrid19->Cells[6][i+1] =  TimeToStr(sr.ts);
	  /*	  ListBox1->Items->Add(IntToStr(sr.n)+" "
				  +FloatToStrF(sr.hz,ffFixed,7,2)+" "
				  +FloatToStrF(sr.bz,ffFixed,7,0)+" "
				  +FloatToStrF(sr.l,ffFixed,7,0) +" "
				  +FloatToStrF(sr.pf,ffFixed,7,2)+" "
				  +TimeToStr(sr.tz)+" "
				  +TimeToStr(sr.ts));   */
		 }
	}

   Smen_sum(Nrul+3);
   Dat_hour();
   Dat_sort();
   k=Nr_d-1; Rul_Sel();
Dilex вне форума Ответить с цитированием
Старый 28.05.2014, 22:51   #38
Dilex
Пользователь
 
Аватар для Dilex
 
Регистрация: 04.11.2010
Сообщений: 76
По умолчанию

Попадая в Rul_Sel();
Код:
void __fastcall TForm1::Rul_Sel()
{   //StringGrid19->Cells[0][i+1] =  IntToStr(sr.n);
// UnicodeString k;

 //k=  StrToInt (StringGrid19->Cells[0][i+1]+StringGrid19->Cells[1][i+1] + StringGrid19->Cells[2][i+1]+ StringGrid19->Cells[3][i+1]) ;
	//   k=	  StringGrid19->Cells[2][i+1] ;
	//   k=	  StringGrid19->Cells[3][i+1] ;
	//   k=	  StringGrid19->Cells[4][i+1] ;
	//   k=	  StringGrid19->Cells[5][i+1] ;
   //	 k=	  StringGrid19->Cells[6][i+1] ;
 //ListBox1->ItemIndex=k;
 //StringGrid19->TopRow=k;
 //StringGrid19           =k;
 SetFilePointer(fser,(sizeof(str_sm)+(k*sizeof(ser))),NULL,FILE_BEGIN);
 ReadFile(fser,&sr,sizeof(ser),&lread,NULL);
 unsigned long r=sr.adr;
 hhz=sr.hz;
 h1z=sr.h1;
 hd1=sr.hdm;
 hd2=sr.hdp;

 if (F_mash){
			Chart2->LeftAxis->Automatic = false ;
			Chart2->LeftAxis->SetMinMax((2*hd1-hhz),(2*hd2-hhz));
			}
	else    Chart2->LeftAxis->Automatic = true;

 F_mash12=true;

 SetFilePointer(fdat,r,NULL,FILE_BEGIN);
 ReadFile(fdat,&z[0],(sizeof(bt)*(sr.l+1)),&lread,NULL);
 Gisto();

  m= sr.l;
  if (m<100) kt=100; else kt=m;

  if (CheckBox2->State==cbChecked)
	{
	 Chart2->MaxPointsPerPage=kt;
	 Chart3->MaxPointsPerPage=kt;
	 Chart5->MaxPointsPerPage=kt;
	 Chart12->MaxPointsPerPage=kt;
	}
	 else
	{
	 Chart2->MaxPointsPerPage=100;
	 Chart3->MaxPointsPerPage=100;
	 Chart5->MaxPointsPerPage=100;
	 Chart12->MaxPointsPerPage=100;
	}
  mpp=Chart2->MaxPointsPerPage;
  ScrollBar1->Position=0;
  ScrollBar1->Max=kt-mpp;
//============================================================================
if (Sh_2) {Sertificat();}
if (Sh_3) { Gistogr();}  // Гистограмма
if (Sh_4) { Diagr();}
if (Sh_5) { Defekt();}
//if (Sh_10){ Valki(); }
}
Отсюда ... к = всем параметрам Disp_sm
Dilex вне форума Ответить с цитированием
Старый 28.05.2014, 22:56   #39
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

я пас ...
eval вне форума Ответить с цитированием
Старый 28.05.2014, 23:02   #40
Dilex
Пользователь
 
Аватар для Dilex
 
Регистрация: 04.11.2010
Сообщений: 76
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
я пас ...
Спасибо за ваше зря потраченное время ...
Dilex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid перенос слов в XE2 andrejjka Общие вопросы Delphi 2 20.03.2012 20:55
Добавление сцен или объектов из 3D MAX в Delphi XE2(FireMonkey) ST@LKER Общие вопросы Delphi 0 06.03.2012 14:44
delphi XE2 Передать указатель на тип record в EnumWindows. Вылет в IntOverFlow или AV Человек_Борща Общие вопросы Delphi 8 12.02.2012 21:57
Embarcadero Delphi XE2 Partner DVD (Зборник компонентов для XE2) volod3000 Софт 2 01.11.2011 02:26
StringGrid -> DBGrid artemavd Общие вопросы Delphi 1 24.09.2008 20:34