예제 #1
0
void StoredData::Do(HWND h)
{
	SaveData o(h);
	if(o())
	{
		FILE *f = _wfopen(o.sFile, L"wb+");
		close_file c_f(f);
		if(NULL != f)
		{
			HeadStoredData head;
			head.countZones = primaryData.countZones;
			dprint("head.countZones = primaryData.countZones; %d", head.countZones);
			head.countSensors = count_sensors;
			head.frameStartTime = primaryData.frameStartTime;
		//	head.trimOffset = primaryData.trimOffset;
			if(1 == fwrite(&head, sizeof(head), 1, f))
			{
				
				if(1 == fwrite(primaryData.realOffsetTime, sizeof(primaryData.realOffsetTime), 1, f))
				if(1 == fwrite(primaryData.indexOffsetZone, sizeof(primaryData.indexOffsetZone), 1, f))
				{
					char buf[1024];
					int k = 0;
					const int count = primaryData.Filling();
					for(int i = 0; i < int(count / dimention_of(buf)); ++i)
					{
						for(int j = 0; j < dimention_of(buf); ++j)
						{
							buf[j] = (char)primaryData.buffer[k++];
						}
						fwrite(buf, 1, sizeof(buf), f);
					}
					int z = 0;
					for(; k < count; ++z, ++k)
					{
						buf[z] = (char)primaryData.buffer[k];
					}

					if(z > 0) fwrite(buf, 1, z, f);
					return;
				}
			}
			MessageBox(0, L"‘айл не сохранЄн", L"ќшибка !!!", MB_ICONERROR);
		}		
	}
}
예제 #2
0
bool LoadData::Do(HWND h)
{
	OpenData o(h);
	if(o())
	{
		FILE *f = _wfopen(o.sFile, L"rb");
		close_file c_f(f);
		if(NULL != f)
		{
			HeadStoredData head;
			if(1 == fread(&head, sizeof(head), 1, f))
			{
				primaryData.countZones = head.countZones;
				int count = fread(primaryData.offsetOfZones, sizeof(primaryData.offsetOfZones[0]), dimention_of(primaryData.offsetOfZones), f);
				char buf[1024];
				//int &k = const_cast<int &>(primaryData.currentOffset);
				int k = 0;//primaryData.GetCurrentOffset();
				for(;;)
				{
					int count = fread(buf, 1, sizeof(buf), f);
					if(0 == count) break;
					{
						for(int i = 0; i < count; ++i)
						{
							primaryData.buffer[k++] = buf[i];
						}
					}
				}
				/*
				primaryData.SetCurrentOffset(k / (
					count_sensors 
					* Singleton<LanParametersTable>::Instance().items.get<NumberPackets>().value 
	                * Singleton<LanParametersTable>::Instance().items.get<PacketSize>().value
					)
					);
					*/
				primaryData.SetCurrentOffset(k);
				if(k)return true;
			}
		}
	}
	MessageBox(0, L"‘айл не загружен", L"ќшибка !!!", MB_ICONERROR);
	return false;
}
예제 #3
0
void LoadData::Do(HWND h)
{
	OpenData o(h);
	if(o())
	{
		FILE *f = _wfopen(o.sFile, L"rb");
		close_file c_f(f);
		if(NULL != f)
		{
			HeadStoredData head;
			if(1 == fread(&head, sizeof(head), 1, f))
			{
				primaryData.countZones = head.countZones;
				fread(primaryData.realOffsetTime, sizeof(primaryData.realOffsetTime), 1, f);
				int count = fread(primaryData.indexOffsetZone, sizeof(primaryData.indexOffsetZone), 1, f);
				primaryData.frameStartTime = head.frameStartTime;
				char buf[1024 * 16];
				int k = 0;
				for(;;)
				{
					int count = fread(buf, 1, sizeof(buf), f);
					if(0 == count) break;
					{
						for(int i = 0; i < count; ++i)
						{
							primaryData.buffer[k++] = buf[i];
						}
					}
				}
				primaryData.SetCurrentOffset(k);
				if(k)
				{					
					Recalculation::Do(NULL);
					return;
				}
			}
		}
		MessageBox(0, L"‘айл не загружен", L"ќшибка !!!", MB_ICONERROR);
	}	
}
int evaluate(int t)
{
	int err = 0;

	/* switch on lookup */
	switch(t)
	{
		case '+':
		case '-':
		case '*':
		case '/':
			/* binaere rechenoperation */
			/* wenn fehlerwert zurueckgegeben wird
			   wird die fehlerroutine aufgerufen */
			if((err = binop_f(t))) error(err);
			break;
		/* stack metafunctionen */
		case 'p':
			if((err = p_f())) error(err);
			break;
		case 'f':
			if((err = f_f())) error(err);
			break;
		case 'c':
			if((err = c_f())) error(err);
			break;
		case 'd':
			if((err = d_f())) error(err);
			break;
		case 'r':
			if((err = r_f())) error(err);
			break;
		/* EOS fuer stdin oder 'q' -> quit */
		case EOF:
			printf("Reached end of input.\n");
		case 'q':
			printf("Goodbye.\n");
			return FALSE;
		default:
			/* wenn lookup whitespace ist, ignorieren */
			if(isws(t)) ;
			/* andernfalls wenn lookup eine ziffer ist
			   zahl einlesen und auf den stack legen */
			else if(isnum(t))
			{
				uint v = 0;

				if((err = read_int(&v)) || (err = stack_push(v)))
				{
					error(err);
				}

				/* recursion damit der lookup nach einlesen
				   der zahl nicht in main ueberschrieben wird. */
				return evaluate(lookup(NULL));
			}
			/* andernfalls ist ein unbekannter befehl eingelesen worden */
			else
			{
				error(ERR_MAIN_UNKNOWN);
			}
	}

	return TRUE;
}