Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Community » Newbie corner » [SOLVED] WIN32 API "MoveFile" and LineEdit Ctrl issue
icon5.gif  [SOLVED] WIN32 API "MoveFile" and LineEdit Ctrl issue [message #37856] Mon, 19 November 2012 06:32 Go to previous message
navi is currently offline  navi
Messages: 107
Registered: February 2012
Location: Sydney, Australia
Experienced Member
Objective: Trying to batch rename files.

Problem: WIN32 API "MoveFile" fails to rename files if the file names are fetched from LineEdit Ctrl.

My guess is it has got something to do with hidden end of line char or CHARSET Unicode Ascii conversion issue. But I did not yet find a way to fix the problem. It is essential that I fetch the file name from the LineEdit Ctrl. Where the LineEdit Ctrl has multiple lines and each line is a file name.

I have coded a sample program to replicate the problem. Attached are the codes and screen-shots.

Thanks,
Navi

Reference:
MoveFile function (Windows) [MSDN]
System Error Codes (0-499) (Windows) [MSDN]


#include <CtrlLib/CtrlLib.h>
#include <CtrlCore/CtrlCore.h>

using namespace Upp;

GUI_APP_MAIN
{

	TopWindow w;
	LineEdit e,f; 
	Vector<String> v1, v2; // Vectors for Storing File Names
	String s;      // String for temporary use
	bool r=false;  // r to keep the "MoveFile" API Return
	int err_no=0;  // err_no to keep "GetLastError" API Return
	
	// GUI SETUP CODE
	e.SetRect(10,10,680,100);
	f.SetRect(10,120,680,220);
	w.SetRect(0,0,700,350);
	
	w<<e<<f;

	// ADDING SOME DUMMY BUT VALID FILE NAMES THAT DO EXIST
	v1.Add("E:\\TEMP\\1.txt");
	v1.Add("E:\\TEMP\\2.txt");
	v1.Add("E:\\TEMP\\3.txt");
	
	// CATENATING VECTOR 'v1' INOT TEMP STRING 's' TO LOAD ALL FILE NAMEs INTO LINEEDIT
	for(int i=0; i<v1.GetCount(); i++){
		 s<<v1[i]<<"\n";
	}
	
	e.Set(s);
	
	
	// FETCHING THE FILE NAME BACK FROM THE LINEEDIT AND SPLITTING THEM INTO SEPERATE STRING
	s.Clear();
	
	s=e.Get();
	
	v2=Split(s, "\n", true);
	
	// TEST-1: RENAMEING FILES USING v1 FILE NAME TO v1 FILE NAME (Ya Same Names. for tests only!)
	s.Clear();

	s<<"DEBUG INFO: TEST-1:\n";
	
	for(int i=0; i<v1.GetCount(); i++){
		
		r=MoveFile(v1[i],v1[i]);
		
		(!r)? err_no=GetLastError() : err_no=0;	
		
		s<<"RENAME "
		 <<v1[i]<<" => "<<v1[i]
		 <<" [Done="<<r<<"] [Error="
		 <<err_no<<"]\n";		
	}
	

	// TEST-2: RENAMEING FILES USING v1 FILE NAME TO v2 FILE NAME (Ya Same Names. but from LineEdit Ctrl)
	s<<"\nDEBUG INFO: TEST-2:\n";
	
	for(int i=0; i<v1.GetCount(); i++){
		
		r=MoveFile(v1[i],v2[i]);
		
		(!r)? err_no=GetLastError() : err_no=0;	
		
		s<<"RENAME "
		 <<v1[i]<<" => "<<v2[i]
		 <<" [Done="<<r<<"] [Error="
		 <<err_no<<"]\n";		
	}	
	
	s<<"\n***Error Code 123(0x7B) = ERROR_INVALID_NAME\n";
	
	// PRINTING THE RESULTS
	f.Set(s);
	
	// Executing the Window
	w.Run();
}
  • Attachment: main.cpp
    (Size: 1.79KB, Downloaded 251 times)

[Updated on: Mon, 19 November 2012 13:51]

Report message to a moderator

 
Read Message icon5.gif
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Frameless(true); bug, my error or ???
Next Topic: EditDoubleSpin
Goto Forum:
  


Current Time: Sat Apr 27 08:44:33 CEST 2024

Total time taken to generate the page: 0.02788 seconds