69 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // This is the main DLL file.
 | |
| 
 | |
| #include "stdafx.h"
 | |
| 
 | |
| #include "DirectoryAndFileAPI.h"
 | |
| 
 | |
| using namespace DirectoryAndFileAPI;
 | |
| 
 | |
| char *DirAndFileFuncts::StringToCharStr(String *InStr)
 | |
| {
 | |
| 	int len =  (InStr->get_Length)();
 | |
| 	char *rtnstr = new char [len+1];
 | |
| 	ZeroMemory(rtnstr,len+1);
 | |
| 	for (int i=0; i<len; i++)
 | |
| 		rtnstr[i] = (InStr->get_Chars)(i);
 | |
| 	return rtnstr;
 | |
| }
 | |
| 
 | |
| String *DirAndFileFuncts::GetLongName(String *NameIn)
 | |
| {
 | |
| 	char *tmpNameIn;
 | |
| 	char *tmpNameOut;
 | |
| 	char *fnPtr = NULL;
 | |
| 	int rtnval;
 | |
| 
 | |
| 	tmpNameIn = StringToCharStr(NameIn);
 | |
| 
 | |
| 	tmpNameOut = new char[1];
 | |
| 	memset(tmpNameOut,0,1);
 | |
| 
 | |
| 	// This will get the buffer size we need
 | |
| 	rtnval = GetFullPathName(tmpNameIn,1,tmpNameOut,&fnPtr);
 | |
| 
 | |
| 	if (rtnval > 1)
 | |
| 	{
 | |
| 		delete tmpNameOut;
 | |
| 		tmpNameOut = new char[rtnval+1];
 | |
| 		memset(tmpNameOut,0,rtnval+1);
 | |
| 		rtnval = GetFullPathName(tmpNameIn,rtnval,tmpNameOut,&fnPtr);
 | |
| 	}
 | |
| 	
 | |
| 	NameOut = new String(tmpNameOut);
 | |
| 	return NameOut;
 | |
| }
 | |
| 
 | |
| String *DirAndFileFuncts::GetShortName(String *NameIn)
 | |
| {
 | |
| 	char *tmpNameIn;
 | |
| 	char *tmpNameOut;
 | |
| 	int rtnval;
 | |
| 
 | |
| 	tmpNameIn = StringToCharStr(NameIn);
 | |
| 
 | |
| 	tmpNameOut = new char[1];
 | |
| 	memset(tmpNameOut,0,1);
 | |
| 
 | |
| 	rtnval = GetShortPathName(tmpNameIn,tmpNameOut,1);
 | |
| 
 | |
| 	if (rtnval > 1)
 | |
| 	{
 | |
| 		delete tmpNameOut;
 | |
| 		tmpNameOut = new char[rtnval+1];
 | |
| 		memset(tmpNameOut,0,rtnval+1);
 | |
| 		rtnval = GetShortPathName(tmpNameIn,tmpNameOut,rtnval);
 | |
| 	}
 | |
| 
 | |
| 	NameOut = new String(tmpNameOut);
 | |
| 	return NameOut;
 | |
| } |