2015-02-05 3 views
0

VC++에서 textBox로 텍스트 파일에 쓰기를 시도하고 있지만 파일의 데이터가 올바르지 않으며 매번 다른 경우가 있습니다.배열에서 WriteFile^class

DWORD wmWritten; 
textBox1->Text = "7.5"; 

array<Char>^ char_array1 = textBox1->Text->ToCharArray(); 

HANDLE hFile = CreateFile(L"C:\\MyData\\Performance\\info.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 

BOOL bErrorFlag = WriteFile(hFile, &char_array1, (DWORD)(sizeof(char_array1)), &wmWritten, NULL); 

결과 : Œó-

에 어떤 문제가 있습니까?

+0

^char_array1 = textBox1-> Text-> ToCharArray(); 관리되지 않는 유형입니까? 이것은 여전히 ​​잘못된 2 인수로 작동하지 않습니다. unsigned char로 캐스팅하는 것조차 도움이되지 않습니다. 배열 ^char_array1 = textBox1-> 텍스트 -> ToCharArray(); \t System :: IO :: File :: WriteAllBytes (path, char_array1); – user3476707

답변

0

@ 알렉스는 말했다 :

수행 관리 및 관리되지 않는 혼합하지 유형하지 않을 경우 필요한

내가 더 동의 할 수 없었다. 관리되는 클래스는 .NET 클래스이며 가비지 수집 등에서 관리됩니다. 관리되지 않는 클래스 또는 기본 클래스는 모든 메모리를 관리해야하는 기존 C++ 클래스입니다.

이 경우 관리되는 코드를 사용하여 모든 작업을 수행 할 수 있습니다. 파일로 출력하는 방법에 대한 C# 웹 페이지를 탐색 한 다음 C++/CLI에서 해당 코드를 작성하십시오. 예를 들어

, 여기 링크 :

https://msdn.microsoft.com/en-us/library/system.io.file(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-2

나는 "C#을 파일 IO를"인터넷 검색에 의해 발견 무언가이다. 탭을 클릭하여 C# 또는 C++ (여기서는 C++ CLI를 의미)에서 코드 스 니펫을 볼 수 있습니다. 기본적으로 다음을 원합니다 :

String^ path = "c:\\temp\\MyTest.txt"; 
if ( !File::Exists(path)) 
{ 

    // Create a file to write to. 
    StreamWriter^ sw = File::CreateText(path); 
    try 
    { 
     //sw->WriteLine("Hello"); 
     //sw->WriteLine("And"); 
     //sw->WriteLine("Welcome"); 
     sw->Write(textBox1->Text); 
    } 
    finally 
    { 
     if (sw) 
       delete (IDisposable^)(sw); 
    } 
}