Curso completo de DarkGdk
Gameprog - Escola de programação de jogos digitais
Contato: gameprog.br@gmail.com
Fase 16.1

index << >>



16.1 Introdução ao sistema de arquivos

1.1 Visão geral
	

A DarkGdk oferece funções para realizar as operações de sistemas de arquivos
como criar, renomear e deletar pastas; copiar, deletar e renomear arquivos
comuns.

Além das funções que DarkGdk oferece, você pode utilizar as funções de 
manipulação de arquivos da linguagem C++, e de maneira avançada você pode
utilizar diretamente as funções respectivas peculiares do sistema Windows.

As funções de gerenciamento de pastas e arquivos são importantes para você
controlar o conteúdo do seu jogo e realizar processos de instalação quando
necessário.

Vamos ver as seguintes funções neste tópico: 
dbCD()		dbSetDir()		dbGetDir()	dbDir()
dbDriveList()	dbWindir()		dbAppname()	dbFileExist()
dbPathExist()	dbExecuteFile() 

	
Nos velhos sistemas operacionais de linha de comando, as pastas eram chamadas de diretórios. Usamos aqui pastas e diretórios exatamente significando a mesma coisa.
sWindir = dbWindir(); char* dbWindir ( void ); Esta função retorna o diretório de instalação do sistema Windows. Ex.: dbPrint ( dbWindir() ); --------------------------------------------------------------------------- sPrograma = dbAppname(); char* dbAppname ( void ); Essa função retorna a linha de comando com nome e caminho da sua aplicação. Ex.: dbPrint ( dbAppname() ); --------------------------------------------------------------------------- dbDir() void dbDir ( void ); Esta função exibe o conteúdo do diretório corrente. Ex.: dbDir(); --------------------------------------------------------------------------- dbDriveList() void dbDriveList ( void ); Esta função exibe uma lista de drives do sistema Ex.: dbDriveList();
1.2 Funções principais Agora vamos ver as funções mais úteis que certamente você vai usá-las com mais frequência: sPasta = dbGetDir(); char* dbGetDir( void ); Esta função retorna o diretório corrente. Ex.: dbPrint( dbGetDir() ); --------------------------------------------------------------------------- dbCD( sPasta); void dbCD ( char* pPath ); Esta função estabelece o diretório corrente. Ex.: dbCD( "c:\\Gameprog\\gdkMedia\\Instalador" ); (*) Importante:
Na denominação de caminhos ou no uso de strings e texto no seu programa você deverá usar duas barras ("\\") para utilizar a barra como parte da string tal como no exemplo acima. Isso é necessário porque em C/C++ essa barra é utilizada para assinalar caracteres especiais.
--------------------------------------------------------------------------- nsts = dbFileExist( sArquivo); int dbFileExist ( char* pFilename ); Esta função retorna 1 caso o arquivo especificado exista. Ex.: if ( dbFileExist("c:\\windows\\notepad.exe") == 1) dbPrint("O arquivo c:\\windows\\notepad.exe existe!"); --------------------------------------------------------------------------- nsts = dbPathExist( sCaminho); int dbPathExist ( char* pFilename ); Esta função retorna 1 caso o caminho especificado exista. Ex.: if ( dbPathExist("c:\\windows\\media") == 1) dbPrint("A pasta c:\\windows\\media existe!"); --------------------------------------------------------------------------- dbSetDir( sPasta); void dbSetDir ( char* pString ); Esta função estabelece o diretório corrente, podendo o diretório ser estabelecido relativamente ao diretório corrente atual. Ex.: dbSetDir("..\\BCC55");
' ..\BCC55 ' aqui pressupomos que existe um diretório BCC55 antes do diretório atual.
--------------------------------------------------------------------------- nsts = dbExecuteFile( sPrograma, sCaminho, sDiretorio); void dbExecuteFile ( char* pFilename, char* pFilename2, char* pFilename3 ); Esta função executa uma aplicação. Ex.: dbExecuteFile("notepad.exe","c:\\windows\\win.ini","");
Em nosso exemplo abrimos o arquivo win.ini que fica em c:\windows. Conserve esse arquivo do jeito que está. Cuidado para não modificá-lo pois ele é um arquivo importante de configuração especialmente para rodar programas antigos do Windows.
Veja nosso programa exemplo:
// SistemaArquivos.cpp // Este programa testa funções de sistema de arquivos #include "DarkGDK.h" // Protótipo das funções void initsys(); // inicializa o sistema void avisar(char *cText); // Exibe um aviso void testar_dir(); // Testa funções de sistema de arquivos // ---------------------------------------------------------------------------- void DarkGDK ( void ) { // Começo da aplicação DarkGdk initsys(); testar_dir(); // Looping principal while ( LoopGDK ( ) ) { dbSync ( ); if (dbMouseClick()==2) { dbSync(); MessageBox(0,"Rodando notepad.exe", "dbExecuteFile()", MB_OK); dbExecuteFile("notepad.exe","c:\\windows\\win.ini",""); } // endif } // fim do while return; } // endfunction DarkGDK() // ---------------------------------------------------------------------------- void initsys() { // Esta função inicializa o sistema dbSyncOn( ); dbSetDisplayMode (800,600,32); dbSetWindowSize(800,600); dbCLS ( dbRGB(0,0,255)); dbInk( dbRGB(255,255,255), dbRGB(0,0,255) ); dbSetWindowTitle("SistemaArquivos.cpp"); dbSetTextOpaque(); } // initsys().fim // ---------------------------------------------------------------------------- void avisar(char * cText) { dbPrint(" "); dbPrint(cText); dbPrint("-------------------------------------------------------------------"); } // endfunction avisar() void testar_dir() { avisar(" dbCD() dbSetDir() dbGetDir() dbDir():"); dbCD("c:\\Gameprog"); dbPrint( dbGetDir() ); dbSetDir("..\\BCC55"); dbDir(); avisar(" dbDriveList():"); dbDriveList(); avisar(" dbWindir() dbAppname():"); dbPrint ( dbWindir() ); dbPrint ( dbAppname() ); avisar(" dbFileExist() dbPathExist()"); if ( dbFileExist("c:\\windows\\notepad.exe") == 1) dbPrint("O arquivo c:\\windows\\notepad.exe existe!"); if ( dbPathExist("c:\\windows\\media") == 1) dbPrint("A pasta c:\\windows\\media existe!"); avisar("...botao direito do mouse para testar dbExecuteFile()"); } // endfunction testar_dir()

index << >>


Produzido por Gameprog: Jair Pereira - Setembro/2013 © gameprog.br@gmail.com http://www.gameprog.com.br http://www.nucleoararat.com.br