Среда, 27 Ноября 2024, 01:55

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Результаты поиска
TerminatorNemoДата: Воскресенье, 21 Февраля 2010, 12:41 | Сообщение # 1 | Тема: Помогите с VC++ 2008
уже был
Сейчас нет на сайте
Функция открытия файла и считывания текста в listBox. Подскажите как её переделать, что бы она не ругалась на русские названия папок в пути к файлу. Спасибо.

#include <io.h>
#include <stdio.h>
#include <fcntl.h>
#include <share.h>
#include <stdlib.h>
#include <vcclr.h>

using namespace System::IO;
using namespace System::Text;

private: System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e)
{
mark1:
Stream ^s;
this->DialogResult = System::Windows::Forms::DialogResult::OK;
if(this->openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
if((s = this->openFileDialog1->OpenFile()) != nullptr)
{
String ^a = this->openFileDialog1->FileName;
LoadFromFile(StrToChar(a), this->listBox1); //StrToChar() - вынесенная функция;
}
else
{
MessageBox::Show("Error file open 2");
goto mark1;
}
}
}

void LoadFromFile(char *File, ListBox ^lb)
{
char s[300];
FILE *fp;
int i = 0;
lb->Items->Clear();

if(!(fp = fopen(File, "r")))
{
MessageBox::Show("Error file open 1", "Attention", MessageBoxButtons::OK);
return;
}

while(! feof(fp))
{
fgets(s, 300, fp);
String ^dd = gcnew String(s);
dd = dd->Substring(0, (dd->Length-1));
lb->Items->Add(dd);
i++;
}
}

char *StrToChar(String ^str)
{
cli::pin_ptr<const> wch = PtrToStringChars(str);

size_t cоnvertedChars = 0;
size_t sizeInBytes = ((str->Length + 1)*2);

char *ch = (char *) malloc(sizeInBytes);

errno_t err = 0;
err = wcstombs_s(&convertedChars, ch, sizeInBytes, wch, sizeInBytes); //возвращает 1 при ошибке;
if(err != 0) MessageBox::Show("wcstombs_s failed!\n");

return(ch);
}

Сообщение отредактировал TerminatorNemo - Воскресенье, 21 Февраля 2010, 13:56
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг