9.30.2005

Criando Objetos em Tempo de Execução

Pessoal,

esse artigo eu gostei muito depois que escrevi.
Eu criei todos os sistemas de manutenção de tabela de um aplicativo meu dinamicamente...
um frm so para manutenção de todas as tabelas de meu banco.

Vale a pena da uma lida.


http://leandroneves.googlepages.com/CriandoObejetoemTempodeExecuacao.apt


Value galera...
um abraço

Leandro Neves
leandroneves@gmail.com
msn: rodrigofneves@hotmail.com
www.besync.com.br

9.27.2005

Programação OOP Parte II

Como prometido ai vai a segunda parte do artigo sobre Programação Orietado a Obejeto no SQLWindow.

Não pedi para niguem revisar o documento, portanto pode conter alguns erros de grafia.
Se encontra-rem algum por favor me escrevam...

http://leandroneves.googlepages.com/OPoderdoOOPcomCentura_ParteII.pdf

Um abraço a todos.

Leandro Neves
leandroneves@gmail.com
msn: rodrigofneves@hotmail.com
www.besync.com.br

9.21.2005

Testes: Ferramentas para compreensão de código

Pessoal, Thiago Arrais escreveu um artigo muito bom sobre Testes.
A idéia é escrever o processo de testes de um sistema para compreender melhor o mesmo... e um visão muito interessante, vale a pena da uma lida.

Primeiro dar os parabéns pelo artigo, esta muito bom.
Obrigado Thiago por ter permitir publica seu artigo aqui no blog.
Um abraço.


Testes.FerramentasCompreensaoCodigo.pdf

Leandro Neves
leandroneves@gmail.com

www.besync.com.br

9.16.2005

Relação de Funções da API do Windows

Eu não gosto muito de usar as api do Windows pois acho que ele engessam o sistema, principalmente quando vai migrar pra outra versão do Windows ai não tem mais a api que usa, ai muda pro Linux não tem ... bom, mas as vezes e a única saída :D

Então ai vai algumas funções.


GetComputerName

Returns computer system name as you seen it in Network Neighborhood

Declare:


//computer name

Function long GetComputerName(ref String lpBuffer , long nSize ) Library "kernel32.dll"
Alias for "GetComputerNameA"

------------------------------------------------------------------------------------------------

Sleep

Sleep process for specified number of miliseconds

Declare:

//sleep

Subroutine Sleep( long dwMilliseconds ) Library "kernel32.dll"


Execution:

//sleep process for 1 second

Sleep(1000)

------------------------------------------------------------------------------------------------

GetSystemDirectory


Retrieve windows system directory eq. c:\WINNT\system32

Declare:

//system directory

Function long GetSystemDirectory(ref string lpBuffer , long ByVal ) Library
"kernel32.dll" Alias for "GetSystemDirectoryA"

Execution:

ls_buffer= space(50)

li_ret = GetSystemDirectory( ls_buffer, 50 )

MessageBox("system directory", trim( ls_buffer ) )

------------------------------------------------------------------------------------------------

GetTempPath

Retrieve path to the temporary folder of the system

Declare:

//temp path

Function long GetTempPath(long nBufferLength, ref string lpBuffer ) Library
"kernel32.dll" Alias For "GetTempPathA"

------------------------------------------------------------------------------------------------

GetTempFileName

Generate temporary and unique filename

Declare:

//temporary random file

Function long GetTempFileName(string lpszPath, string lpPrefixString, long wUnique,
ref String lpTempFileName) Library "kernel32.dll" Alias for "GetTempFileNameA"

Execution:

//temporary file

li_ret = GetTempFileName(trim(ls_temppath), 'tmp', 0, ls_buffer)

MessageBox("temporary file", trim(ls_buffer))

------------------------------------------------------------------------------------------------

GetUserName

Get user name that is currently logged to the system

Declare:

//user name

Function long GetUserName(ref string lpBuffer, ref long nSize ) Library
"advapi32.dll" Alias for "GetUserNameA"

Execution:

//user name

ls_buffer = space(100)

li_ret = GetUserName(ref ls_buffer, 100 )

MessageBox("user name", trim(ls_buffer))

------------------------------------------------------------------------------------------------

GetWindowsDirectory

Get windows directory eq. c:\WINNT

Declare:

//windows directory

Function long GetWindowsDirectory(ref String lpBuffer , long nSize ) Library
"kernel32.dll" Alias For "GetWindowsDirectoryA"

Execution:

ls_buffer = space(50)

li_ret = GetWindowsDirectory( ls_buffer , 50 )

MessageBox("windows directory", trim(ls_buffer))

------------------------------------------------------------------------------------------------

SHAddToRecentDocs

Declare:

//add last used document into document history

subroutine SHAddToRecentDocs( Long uFlags, String pv ) Library "shell32.dll"

Execution:

//add document to the last edited documents

SHAddToRecentDocs(2 , 'c:\custdata.txt' )

------------------------------------------------------------------------------------------------

SHBrowseForFolder

Open system dialog for selecting dialog screen

Declare:

type BROWSEINFO from structure

long hwndOwner

long pidlRoot

string pszDisplayName

string lpszTitle

long ulFlags

long lpfn

long lParam

long iImage

end type



//browse for folder

Function long SHBrowseForFolder(ref BROWSEINFO lpbi ) Library "shell32.dll"
Alias for "SHBrowseForFolderA"


Execution:

BROWSEINFO lstr_browserinfo

lstr_browserinfo.hwndOwner = Handle(parent)

lstr_browserinfo.pszDisplayName = space(300)

lstr_browserinfo.lpszTitle='test'

lstr_browserinfo.lpfn=0

SHBrowseForFolder( ref lstr_browserinfo )

------------------------------------------------------------------------------------------------

ShellExecute

Execute program attached to the file:


Declare:

//shell execute

Function long ShellExecute(long hwnd, string lpOperation , string lpFile , string
lpParameters , string lpDirectory , long nShowCmd) Library "shell32.dll" Alias
for "ShellExecuteA"

Execution:

ShellExecute(Handle(parent), "open" , "iexplore" , "" , "" , 3 )

------------------------------------------------------------------------------------------------

ShFileOperation

Copy, delete, move files using the standard windows dialog boxes
(

Declare:

type SHFILEOPSTRUCT from structure

long hwnd

long wFunc

string pFrom

string pTo

integer pFlags

long fAnyOperationsAborted

long hNameMappings

string lpszProgressTitle

end type

//copy, rename, delete files

Function long SHFileOperation(ref SHFILEOPSTRUCT lpFileOp ) Library "shell32.dll"
Alias for "SHFileOperationA"

------------------------------------------------------------------------------------------------

FindFirstFile, FindNextFile

Declare:

type FILETIME from structure

long dwLowDateTime

long dwHighDateTime

end type


type win32_find_data from structure

long dwfileattributes

filetime ftcreationtime

filetime ftlastaccesstime

filetime ftlastwritetime

long nfilesizehigh

long nfilesizelow

long dwreserved0

long dwreserved1

char actercfilename[260]

char actercalternate[14]

end type

//find first file

Function long FindFirstFile(string lpFileName, ref WIN32_FIND_DATA lpFindFileData
) Library "kernel32.dll" Alias for "FindFirstFileA"

Execution:

long ll_ret

WIN32_FIND_DATA lstr_find_info , l_empty


ll_ret = FindFirstFile("C:\temp\*.txt", lstr_find_info )

If ll_ret = -1 Then

MessageBox("","there are no files C:\temp\*.txt")

return

End If


MessageBox("first file founded",trim(lstr_find_info.cFileName) )


lstr_find_info = l_empty

//find next file

ll_ret = FindNextFile(ll_ret, lstr_find_info )

If ll_ret = 0 Then

MessageBox("","there are no more files C:\temp\*.txt")

return

End If


MessageBox("second file founded",trim(lstr_find_info.cFileName) )

------------------------------------------------------------------------------------------------

FindClose

Declare:

//close

Function long FindClose(long hFindFile ) library "kernel32.dll"

------------------------------------------------------------------------------------------------

GetDiskFreeSpaceEx

Declare:

//get disk free space

Function long GetDiskFreeSpaceEx(String lpDirectoryName , ref ULARGE_INTEGER
lpFreeBytesAvailableToCaller , ref ULARGE_INTEGER lpTotalNumberOfBytes, ref
ULARGE_INTEGER lpTotalNumberOfFreeBytes ) Library "kernel32.dll" Alias For "GetDiskFreeSpaceExA"

------------------------------------------------------------------------------------------------

GetFullPathName

Declare:

//get file path

Function long GetFullPathName(string lpFileName , long nBufferLength , ref string
lpBuffer , string lpFilePart ) Library "kernel32.dll" Alias for "GetFullPathNameA"

Execution:

//get file path

String ls_buffer = space(255)

GetFullPathName('trala.txt' , 255, ls_buffer, '' )

MessageBox("", "full path : "+ trim( ls_buffer))


------------------------------------------------------------------------------------------------

RemoveDirectory:

Declare:

//remove directory

Function long RemoveDirectory(string lpPathName) Library "kernel32.dll" Alias
for "RemoveDirectoryA"

GetEnvironmentVariable

Declare:

//get system variable

Function long GetEnvironmentVariable(string lpName , ref string lpBuffer , long
nSize ) Library "kernel32.dll" Alias for "GetEnvironmentVariableA"

Execution:

string ls_buffer = space(255)

//get system variable

GetEnvironmentVariable('TEMP' , ls_buffer , 255 )

MessageBox("","temp path "+ trim(ls_buffer))

------------------------------------------------------------------------------------------------

SetEnvironmentVariable

Declare:

//set system variable

Function long SetEnvironmentVariable(string lpName , string lpValue )
Library "kernel32.dll" Alias for "SetEnvironmentVariableA"

Execution:

string ls_buffer = space(255)


//set system variable

SetEnvironmentVariable('TEST' , 'tralalalal' )

//get system variable

GetEnvironmentVariable('TEST' , ls_buffer , 255 )

MessageBox("","added variable"+ trim(ls_buffer))

www.besync.com.br

9.15.2005

Report Builder Travando

Ontem me aconteceu algo me deixou estressado.

Toda vez que alterava um qrp, salvava e depois tenta-se abrir ou utilizado no SQLWindow tele travava ... Não tinha jeito... tentava de tudo nada...

Pensei que fosse minha maquina, fui em outra, e nada mesma coisa.

Ai resolvi fazer passo a passo, alteração por alteração... alterava, salvava abria para tentar identificar onde ele estava travando.

Fiz esta operação dezenas de vezes.. ate que descobri o erro.. o problema acontecia, quando colocava uma quantidade muito grande de linhas no Page Head ou no Page Fooder... o problema e tão serio que ao colocar 28 linhas no Page Fooder, ele só trava quando tento visualizar ou imprimir através do SQLWindow.

Bom.... deve ser algum bug muito do safado e já deve ter sido corrigido em pft.

Mas fica o alerta... se você estiver usando o o Report Builder 2.1 e estivar travado seu QRP, verifique seu numero de linhas :D

Um abraço a todos.

www.besync.com.br

9.12.2005

Developer Conference - Participe





Pessoal,
Vamos ajudar a Gupta a organizar um evento Técnico para programadores Gupta.
Participe do fórum Evento técnico Gupta no site http://www.guptaexplorer.com.br
Quanto mais pessoas participem, mais rápido e com mais qualiadde pode organizar o evento.


Se quiserem entrame contato comigo via MSN podem me cadastrar rodrigofneves@hotmail.com

Conto com a colaboração de todos.

Leandro Neves
leandroneves@gmail.com
msn: rodrigofneves@hotmail.com

www.besync.com.br

9.06.2005

Cobertura - Evento Gupta Recife

Pessoal,

acabei de chegar do evento Gupta que teve aqui em Recife... foi muito produtivo e com otimas novidades .
Depois estarei postando aqui os ppt´s que foram apresentados e algumas fotos.
Estou esperando apenas Ana Paula me mandar.

**************************************************************************************
Novidades
**************************************************************************************

Bom mas vou falar de algumas novidades para começar.
O Team Developer 2006 sera lançado em abril de 2006, como todos ja sabem ele copilara nativo para Linux, e tera uma nova IDE.
Segundo Ana Paula a nova IDE do SQLWindow sera sobre um conjunto de biblioteca grafica chamadas qt... para quem usa o Linux o nome soa bem familiar, o KDE é desenvolvido sobre ela.
A proposta deste novo ambiente é estar tudo na mão do desenvolvendor, podendo controlar banco de dados, componente, etc...
Ela não deu mais detalhe, porem vou batalhar por um printscreen do ambiente.

o Team Developer 2007 sera lançado no final de 2006...esse sim promete, ele copilara para dot net, mono e nativo Linux. O nativo windows sera descontinuado.

Na palestra de Ana Paula, ela tocou muito na tecla de migrar as aplicações para OLEDB pois a Gupta não da mais suporte aos routes eles continuam apenas pela compatibilidade.

**************************************************************************************
Evento para Programadores
**************************************************************************************
Pessoal,
Uma noticia muito boa foi que o pessoal da Gupta e da Unisystem, vão apoiar um evento (provavelmente em SP) voltado para os programadores SQLWindow.

A ideia do evento e mostrar soluções, e como se fazer (programado)....
O Evento sera o dia todo ou em dois dias, ainda vamos decidir.

Gostaria de sujestões de palestras e do apoio de voces para que o evento possa acontecer, pois so com adesão de todos é que podemos fazer este evento.

Eu pensei em alguns temas como.
CDK - Gerador de Condigo Fonte.
Aplicação Web - Como fazer uma aplicação web em SQLWindow.
Padrões de Projetos com Team Developer.

Espero contar com a ajuda de voces.

**************************************************************************************
Livro Team Developer 2005.1
**************************************************************************************
No evento foi anunciado oficialmente a publicação de um livro sobre Team Developer 2005.1 for Linux.
Escrito por Lairton Nogueira Jr. e por mim, sera lançado provavalmente daqui a um ou dois messes.


Bom é isso....
Depois posto mais detalhes tecnicos.

Um abraço a todos.

Leandro Neves
leandroneves@gmail.com
msn: rodrigofneves@hotmail.com
www.besync.com.br