Список форумов   Список форумов  

Чтение файлов различных типов

Всё о программировании на Labview

Модераторы: Техподдержка NI, Robert, Модератор

Чтение файлов различных типов

Сообщение tumanovalex2007 » Ср ноя 07, 2007 5:34 pm

Пытаюсь прочитать файлы, созданные функцией API WriteFile. В файлах записан массив чисел 0.0, 1.0, 2.0, 18.0, -345.0. Считывание происходит неправильно. Помогите, пожалуйста. Файл примера прилагаю.
Вложения
Чтение файлов.zip
(24.58 KiB) Скачиваний: 552
tumanovalex2007
Активный пользователь
 
Сообщений: 34
Зарегистрирован: Сб сен 29, 2007 9:17 pm

Сообщение maxa » Пт ноя 09, 2007 8:10 pm

При чтении файла вы указываете тип для чтения число, а читаете массив
maxa
 
Сообщений: 8
Зарегистрирован: Вт сен 18, 2007 9:23 am

Сообщение tumanovalex2007 » Пт ноя 09, 2007 10:23 pm

maxa писал(а):При чтении файла вы указываете тип для чтения число, а читаете массив

Заменил тип для чтения на массив, порвалась связь с индикатором типа "массив". Видимо, дело не в этом.
tumanovalex2007
Активный пользователь
 
Сообщений: 34
Зарегистрирован: Сб сен 29, 2007 9:17 pm

Сообщение jonni » Сб ноя 10, 2007 4:05 pm

а покажите как Вы записиваете в фаили с помощью API Write File, вседь очень много способов записать, но читать нужно так же как записивали.
-CLAD-
jonni
Активный пользователь
 
Сообщений: 45
Зарегистрирован: Пн окт 15, 2007 11:26 am

Сообщение tumanovalex2007 » Вс ноя 11, 2007 2:10 pm

Вот код:
template <typename READ_TYPE>
READ_TYPE* readdata(char par[][62], const long num, long* filesize, READ_TYPE indread) {
DWORD byteread = 0;
HANDLE filedat = CreateFile(par[num], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
if(filedat == INVALID_HANDLE_VALUE) {
MessageBox(NULL, "Файл с данными не найден!!!", NULL, MB_OK);
std::cin.get();
exit(1);
}
*filesize = GetFileSize(filedat, NULL);
READ_TYPE *bufdat = new READ_TYPE[*filesize/sizeof(READ_TYPE)];
if(!ReadFile(filedat, bufdat, *filesize, &byteread, NULL)) {// Проверка правильности считывания файла
MessageBox(NULL, "Ошибка чтения файла данных!!!", NULL, MB_OK);
CloseHandle(filedat);
std::cin.get();
exit(1);
}
CloseHandle(filedat);
return bufdat;
}

template <typename WRITE_TYPE>
int writedata(char* fileout, WRITE_TYPE* buftar, long* tar) {
DWORD bytewr = 0;
HANDLE hfile = CreateFile(fileout, GENERIC_WRITE | GENERIC_READ, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hfile == INVALID_HANDLE_VALUE) {
MessageBox(NULL, "Файл для записи создать не удалось!!!" , NULL, MB_OK);
std::cin.get();
exit(1);
} //if
WriteFile(hfile, buftar, (*tar)*sizeof(WRITE_TYPE), &bytewr, NULL);
CloseHandle(hfile);
delete[] buftar;
return(0);
}
tumanovalex2007
Активный пользователь
 
Сообщений: 34
Зарегистрирован: Сб сен 29, 2007 9:17 pm

Сообщение jonni » Пн ноя 12, 2007 2:18 pm

vot primer kak chitat' Int, ostal'noe dumayu vse budet Vam ponyatno:
Вложения
11-12-2007.JPG
11-12-2007.JPG (13.33 KiB) Просмотров: 9610
-CLAD-
jonni
Активный пользователь
 
Сообщений: 45
Зарегистрирован: Пн окт 15, 2007 11:26 am

Сообщение tumanovalex2007 » Вт ноя 13, 2007 6:07 pm

Делаю вроде бы также, но ничего не получается. Пример прилагаю.
Вложения
ReadFileNew2.zip
(22.83 KiB) Скачиваний: 573
tumanovalex2007
Активный пользователь
 
Сообщений: 34
Зарегистрирован: Сб сен 29, 2007 9:17 pm

Сообщение jonni » Вт ноя 13, 2007 7:15 pm

vnimatel'no sledim za tem kuda podhodyat soedineniya... i togda ve budet normal'no rabotat'.
Вложения
11_12_2007_968.jpg
11_12_2007_968.jpg (5.09 KiB) Просмотров: 9576
-CLAD-
jonni
Активный пользователь
 
Сообщений: 45
Зарегистрирован: Пн окт 15, 2007 11:26 am

Сообщение tumanovalex2007 » Вт ноя 13, 2007 7:32 pm

Спасибо большое за быстрые ответы, все получилось. Я попробовал также решить эту задачу с помощью DLL, в которой сделал тестовую функцию (Summa) и рабочую функцию (readdata). При этом функция Сумма работает нормально, а вот функция чтения файлов не работает. Посмотрите, пожалуйста, мой пример. Кроме того, хотел бы узнать, как отлаживать DLL, вызываемые из LabView. В дальнейшем планирую использовать DLL, написанные на Visual С++, поэтому информация о использовании таких DLL в LabView и их отладке мне бы очень пригодилась.
Вложения
ReadDataDLL.ZIP
(17.65 KiB) Скачиваний: 560
tumanovalex2007
Активный пользователь
 
Сообщений: 34
Зарегистрирован: Сб сен 29, 2007 9:17 pm


Вернуться в LabVIEW

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1