2014-12-09 4 views
-1

특정 파일을 삭제하는 코드 줄을 쓰려고하는데 DeleteFile 함수를 시도했지만 "식별자를 찾을 수 없습니다."(Visual Studio 오류 코드 C3861) 메시지.Visual C++에서 파일을 제거하는 방법

버튼 클릭 이벤트의 내부 코드는 다음과 같습니다

DeleteFile(path+"filemaker\\start.ini"); 

나는이 일을 내 form1.h에 무엇이 필요합니까?

+0

글쎄, 당신을했다 '경로'선언 ...? –

+0

경로는 단추 클릭 이벤트 내에서 DeleteFile 함수 앞에 다음과 같이 선언되었습니다. path = this-> FilePathBox-> Text; – TheMohawkNinja

+0

사실'DeleteFile()'을 염두에두고있었습니다. 그것이 선언 되었습니까? – sashoalm

답변

2

DeleteFile 사용 방법은 Win API 기능이므로 #include <Windows.h>해야합니다.

인수는 char* 포인터 여야하며 std::string은 인수로 사용할 수 없습니다.

std::string path = "\\path\\to\\dir\\"; 
std::string filename = path + "filemaker\\start.ini"; (when path does end with "\\") 
DWORD res = DeleteFile(filename.c_str()); 

당신은뿐만 아니라 #include <stdio.h> (또는 <cstdio>) 및

int remove(const char* filename),

는 크로스 플랫폼이기 때문에 더 나은입니다 (ANSI C 사용할 수 있습니다 다음과 같이

은 그래서 당신은 할 수있다). 당신은 다음과 같이 마샬링을 추가하는 것이 필요

std::string path = "\\path\\to\\dir\\"; 
std::string filename = path + "filemaker\\start.ini"; (when path does end with "\\") 
int res = remove(filename.c_str()); 

편집 :이 같은

지금
//includes 
#include <msclr\marshal.h> 
#include <msclr\marshal_cppstd.h> 

코드 :

String^ filepath=path+"filemaker\\start.ini"; 
const char* tmpptr= msclr::interop::marshal_as<const char*>(filepath); 
DeleteFile(tmpptr); 
+0

별도 : Windows에서 경로에 백 슬래시를 사용할 이유가 없습니다. 명령 프로세서에서만 필요합니다. 그렇다면 추악한 배증은 없습니다. –

+0

Windows에서 "\\"또는 "/"를 경로 구분 기호로 사용하지 않는 언어 (한국어 및 일본어와 같은)가 있기 때문에 올바른 방법은 OS에서 경로 구분 기호를 얻는 것입니다. – SHR

+0

글쎄, DeleteFile 옵션을 수행하려고하는데 C2228 오류가 발생합니다 ('.c_str'의 왼쪽에 class/structure/union이 있어야 함). 코드는 다음과 같습니다. String^filepath = path + "filemaker \\ start.ini"; const char filechar = filepath.c_str(); DeleteFile (filechar); '#pragma once'바로 아래에 #include 줄을 넣었습니다. – TheMohawkNinja