Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программы для выполнения лаб 1 и 2 / KALMAN / SOURCE / SOURCE / TOOLS
.CPP#include <ctype.h>
#include <string.h>
#include "tools.h"
const char msgFTail[] = " быть вещественным числом",
msgDWTail[] = " быть целым положительным числом";
BOOL CheckFloatEditor(TWindow *parent, TEdit *Control, unsigned bufLength, double *target, const char *msgHead)
{
char *buffer = new char[bufLength+1], *errchar;
double number;
BOOL error = FALSE;
Control->GetLine(buffer, bufLength, 1);
number = strtod(buffer, &errchar);
if (*errchar)
error = TRUE;
else
if (number == 0)
{
for (char *p = buffer; *p; p++)
if (isdigit(*p))
break;
if (!isdigit(*p))
error = TRUE;
}
delete buffer;
if (error)
{
char *message = new char[strlen(msgHead)+34];
strcpy(message, msgHead);
strcat(message, msgFTail);
parent->MessageBox(message, "Ошибка", MB_OK|MB_ICONHAND);
Control->SetFocus();
delete message;
return TRUE;
}
if (target)
*target = number;
return FALSE;
}
BOOL CheckDwordEditor(TWindow *parent, TEdit *Control, unsigned bufLength, unsigned long *target, const char *msgHead)
{
char *buffer = new char[bufLength+1];
unsigned long number;
BOOL error = FALSE;
Control->GetLine(buffer, bufLength, 1);
for (char *p = buffer; *p; p++)
if (!isdigit(*p))
break;
if (*p || p == buffer)
error = TRUE;
else
number = atol(buffer);
delete buffer;
if (error)
{
char *message = new char[strlen(msgHead)+32];
strcpy(message, msgHead);
strcat(message, msgDWTail);
parent->MessageBox(message, "Ошибка", MB_OK|MB_ICONHAND);
Control->SetFocus();
delete message;
return TRUE;
}
if (target)
*target = number;
return FALSE;
}
void killZeros(char *str)
{
if (!strchr(str, '.'))
return;
for (unsigned i = strlen(str)-1; i && str[i] == '0'; i--)
str[i] = '\0';
if (i && str[i] == '.')
str[i] = '\0';
}
Соседние файлы в папке SOURCE