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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2015, 22:29   #1
Shushpanchiky
Новичок
Джуниор
 
Регистрация: 19.02.2015
Сообщений: 2
По умолчанию Несоответствие имени файла

Добрый вечер. Хотелось бы спросить совета.
Дело в том, что в ходе работы потребовалось считать данные из Excel файла.
Embarcadero RAD Studio XE - С++
Да, на форуме уже много тем об этом, читала их, но ответа не нашла.
Отчего теряется часть имени файла при открытии?
Попытка открыть файлC:\Users\user\Desktop\активы\11 .exl
Приводит к подобной ошибке:

Видно, что часть имени теряется, но почему?


Код:
	
Variant VarExcel, VarSheet;

	if(FormMain->OpenDialogData->Execute())
	{
		for(int i = 0; i < 11; i++)
			for(int j = 0; j < 3; j++)
				FormMain->StringGridData->Cells[j + 1][i + 1] = "";


		VarExcel = CreateOleObject("Excel.Application");
		VarExcel.OlePropertyGet("Application").OlePropertyGet("Workbooks").OleProcedure("Open" , FormMain->OpenDialogData->FileName.c_str());
		VarExcel.OlePropertySet("Visible", false);
		VarSheet = VarExcel.OlePropertyGet("ActiveSheet");

		for(int i = 0; i < NumberAsset; i++)
		{
			try
			{
				Asset[i] = StrToFloat(VarSheet.OlePropertyGet("Cells").OlePropertyGet("Item", i + 2 , 2));
			}
			catch(EConvertError&)
			{
				Application->MessageBoxA(L"Некорректный тип загружаемых данных.", L"Ошибка", MB_ICONSTOP);
				VarExcel.OlePropertyGet("Application").OleProcedure("Quit");
				VarSheet = NULL;
				VarExcel = NULL;
				return;
			}
		}

		VarExcel.OlePropertyGet("Application").OleProcedure("Quit");
		VarSheet = NULL;
		VarExcel = NULL;

   .
   .
   .
}
Очень надеюсь на помощь, самостоятельно буксую над этой проблемой уже несколько дней.

Последний раз редактировалось Shushpanchiky; 19.02.2015 в 22:31. Причина: Завершенности кода ради
Shushpanchiky вне форума Ответить с цитированием
Старый 19.02.2015, 22:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если переложить файл поближе, к примеру в корень проблема уйдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2015, 23:06   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если переложить файл поближе, к примеру в корень проблема уйдет?
Не-а. Не прокатит.
Он пытается считать пустой фал в String. Причём, без типизации. Может в Паскуале это и можно (ХЗ), в С++ - изя.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.02.2015, 23:21   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Он пытается считать пустой фал в String
Завязывай ка ты с алкоголем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.02.2015, 08:20   #5
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Проверить наличие файла:
Код:
 if(!FileExists(Filename.w_str()))
		  return FILE_NOT_FOUND;
или воспользоваться OpenDialog.

Строки неплохо бы привести к WideString, помогает.
Код:
VarExcel.OlePropertyGet(WideString("Application")).OleProcedure(WideString("Quit"));
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 27.02.2015 в 08:23.
Krok27 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скачивание файла из интернета, не зная пути и имени файла. Скрипт Microsoft Office Excel 0 14.09.2013 22:14
Изменение имени файла. С++ DarkVss Помощь студентам 0 13.06.2012 12:22
Изменение имени файла coNsept Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 06.12.2011 15:27
Получить имя файла из ссылки(в конце ссылки нет имени файла) Человек_Борща Работа с сетью в Delphi 11 05.06.2011 15:15
длина имени файла dimcoff Общие вопросы Delphi 4 23.03.2010 10:43