jeanph...@igsoft.be
unread,Jun 4, 2019, 3:22:46 AM6/4/19Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message as abuse
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Hello Ronny,
sorry for the late answer.
Here the sample of my method GetLatest with my class Adam with PrjSelect and Project to manage it.
Warning that i cannot hide the windows during the get latest via sourceSafe... So to get rid of the warning message for .MDF files, i delete them before getting data (because we don't use it).
oAdam := Adam{}
oAdam:OpenCatalog()
aProjects := oAdam:GetProjects()
IF oProj:ProjectName == self:cProject
IF oProj:SELECT( oProj:ProjectName )
cPath := AllTrim(oProj:GetPath(oProj:ProjectName))
IF !Empty( cPath )
aDir := Directory( cPath+"*.MDF")
for j := 1 to ALen(ADir)
IF At(".MDF", ADir[j][F_NAME]) > 0
FErase( cPath + ADir[j][F_NAME] )
ENDIF
next j
ENDIF
buffer := MemAlloc(100)
oAdam:errorCode := AdamGetFirstApp( @pAID )
DO WHILE oAdam:errorCode == SUCCESS .and. pAID<>0
oAdam:errorCode := AdamGetNextApp( @pAID )
IF oAdam:errorCode == SUCCESS .and. pAID<>0
AppQueryName(pAID,buffer, 100)
VOSCCAppIsUnderSCC(pAID, @lIsUnderSCC)
IF lIsUnderSCC
IF VOSCCAllGet(pAID, false) == SUCCESS
//? "Latest version is loaded!"
ELSE
lRet := false
ENDIF
ENDIF
ENDIF
DoEvents()
ENDDO
MemFree(Buffer)
ELSE
WarningBox{self, "Error", "Project is already open"}:show()
ENDIF
ENDIF
oAdam:CLoseCatalog()
oAdam:CloseAdam()
Class Adam
EXPORT errorCode as DWORD
EXPORT MAX_PROJECT_NAME := 100 as DWORD
EXPORT prjEnum as ptr
//Catalog
DECLARE METHOD OpenCatalog
DECLARE METHOD CLoseCatalog
//Projects
DECLARE METHOD GetProjects
//Adam
DECLARE METHOD CloseAdam
METHOD CloseAdam() as LOGIC PASCAL class Adam
errorCode := AdamExit()
return errorCode == SUCCESS
METHOD CLoseCatalog() as LOGIC PASCAL class Adam
IF PrjCatDestroyEnum(PRJEnum) == SUCCESS
return true
else
return false
endif
METHOD GetProjects() as ARRAY PASCAL CLASS Adam
LOCAL buffer as ptr
LOCAL projectName as STRING
LOCAL projects as ARRAY
IF errorCode == SUCCESS
buffer := MemAlloc(MAX_PROJECT_NAME)
projects := {}
errorCode := PrjGetFirst(prjEnum, buffer, MAX_PROJECT_NAME)
DO WHILE errorCode == SUCCESS .and. PSZLen(psz(_cast, buffer)) > 0
projectName := PSZ2String(psz(_cast, buffer))
AAdd(projects, Project{self, projectName})
errorCode := PrjGetNext(prjEnum, buffer, MAX_PROJECT_NAME)
ENDDO
MemFree(Buffer)
ENDIF
RETURN projects
Method Init() class Adam
LOCAL lNew := false as LOGIC
AdamInit(null_ptr, @lNew)
return self
METHOD OpenCatalog() as LOGIC PASCAL class Adam
LOCAL oPtr as ptr
errorCode := PrjCatCreateEnum(null_ptr, null_ptr, @oPtr)
IF errorCode == SUCCESS
self:prjEnum := oPtr
return true
ELSE
return false
ENDIF
Class Project
PROTECT oAdam as Adam
EXPORT ProjectName as STRING
EXPORT errorCode as DWORD
DECLARE METHOD Open
DECLARE METHOD SELECT
DECLARE METHOD CLOSE
DECLARE METHOD GetPath
DECLARE METHOD Reindex
METHOD Close() as LOGIC PASCAL class Project
errorCode := PrjClose()
IF errorCode == SUCCESS
return true
else
return false
ENDIF
METHOD GetPath(name as STRING) as STRING PASCAL class PROJECT
LOCAL projectPath as STRING
LOCAL buffer as ptr
buffer := MemAlloc(500)
errorCode := PrjQueryDir( String2Psz(name), buffer, 500, null)
IF errorCode == SUCCESS .and. PSZLen(psz(_cast, buffer)) > 0
projectPath := PSZ2String(psz(_cast, buffer))
ENDIF
MemFree(Buffer)
return projectPath
Method Init( oOwner, Project) class Project
self:oAdam := oOWner
self:ProjectName := Project
return self
METHOD Open( cPath as STRING ) as LOGIC PASCAL class Project
errorCode := PrjOpen( String2Psz(cPath))
IF errorCode == SUCCESS
return true
else
return false
ENDIF
METHOD Reindex( name as STRING) as LOGIC PASCAL class Project
errorCode := PrjReindex( String2Psz(name))
IF errorCode == SUCCESS
return true
else
return false
ENDIF
METHOD SELECT( name as STRING) as LOGIC PASCAL class Project
errorCode := PrjSelect( String2Psz(name))
IF errorCode == SUCCESS
return true
else
return false
ENDIF