Search  
Wednesday, May 23, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Visual FoxPro in general  aplicatia sa fa...
 aplicatia sa faca log
 
 9/26/2006 11:19:40 AM
User is offlineAlin Berce
371 posts
3rd




aplicatia sa faca log
 (Romania)
Intrebare... intrebare... Care ar fi calea de urmat pt a face in aplicatia mea un modul care sa se ocupe cu urmatorul lucru: creaza un fisier text in directorul aplicatiei, scrie in el cam tot ce se intampla in aplicatie (sau macar la load-ul aplicatiei). Acest lucru ar fi util in cazul in care apar probleme... userul imi trimite acest fisier si ar cam trebui sa stiu de la ce provine problema. E greu? E usor? Ati facut asa ceva. (din cate imi amintesc eu, Grig a facut asa ceva).
VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 9/26/2006 11:37:01 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (N/A)
Da, este corect - am facut asa ceva. In esenta trebuie sa introduci din loc in loc un STRTOFILE(). Fie scrii direct comanda, fie folosesti o clasa custom careia ii transmiti ca parametru textul care trebuie logat, nu conteaza. Implementarea propriuzisa poate diferi, dar esenta e aceeasi: STRTOFILE("textul care trebuie logat").
Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/26/2006 12:18:09 PM
User is offlineAlin Berce
371 posts
3rd




Re: aplicatia sa faca log
 (Romania)
Aha... deci sa vad daca am inteles bine. Fac o clasa custom careia ii transmit ca parametru textul logat. In aceasta clasa fac strtofile('textul transmis ca parametru'). Exemplu: cand pornesc aplicatia transmit "26.09.2006 - Application loaded" :)
Verific conexiunea cu serverul:
"26.09.2006 11.59.22 "Conexiune cu serverul realizata"
Dupa ce se logheaza un user:
"26.09.2006 11:59:00 - "User xx logat".

Si peste tot in aplicatie cand fac ceva ce vreau sa fie logat instantiez aceasta clasa. Mi se pare foarte buna aceasta modalitate. Mersi Grig, as always. Tu cum faci cu ascest fisier de log, il stergi si il completezi la fiecare noua sesiune a aplicatiei ? Faci backup la fisierul anterior pt a avea un istoric... ? Probabil depinde de fiecare ce necesitati are.

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 9/26/2006 12:28:03 PM
User is offlineaflorin
840 posts
1st


Re: aplicatia sa faca log
 (Romania) Modified By aflorin  on 9/26/2006 12:29:32 PM)
Ceva de genul acesta am si eu: o clasa custom, din care instantiez un obiect la inceputul aplicatiei, facut public.
Am o metoda OpenLog() unde ii dau ca parametri 1) fisierul unde se tine log-ul si 2) daca se face overwrite sau se adauga la sf fisierului
Mai am un WriteLog() cu parametru textul de scris si daca scriu pe rand nou sau in continuare (daca folosesti StrToFile() am impresia ca face el automat chr(13)+chr(10))
La sfirsit, pus si in Destroy() darapelabil si manual, am SaveLog().

In esenta, poti sa pui aici cam tot ce vrei tu - cel mai adesea eu il folosesc pentru a cronometra cit dureaza rularea anumitor bucati dintr-o procedura.
Si inca ceva: daca alegi calea de scriere in continuare, sa fii atent ca la un numar X de rulari s-ar putea sa ramai fara spatiu pe disc daca sari calul

Florin Aparaschivei - Iasi
 9/26/2006 12:35:25 PM
User is offlineAlin Berce
371 posts
3rd




Re: aplicatia sa faca log
 (Romania)
E, uite ca azi am o zi constructiva :) O sa incerc sa fac o clasa custom, desi probabil o sa ma lovesc de mai multe probleme. Adevarul e ca n-am mai facut nici o clasa de tip custom pana acum.
@aflorin27 imi place mult cum ai facut tu. Asa o sa incerc si eu: Openlog(), WriteLog(), SaveLog(). Clasa asta va fi pornita tot timpul ?

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 9/26/2006 1:00:58 PM
User is offlineaflorin
840 posts
1st


Re: aplicatia sa faca log
 (Romania)
in principiu, eu fac in programul principal:

public objLog
objLog = NewObject("MyLogClass")

si atunci o am disponibila tot timpul

Florin Aparaschivei - Iasi
 9/26/2006 1:37:21 PM
User is offlineAlin Berce
371 posts
3rd




Re: aplicatia sa faca log
 (Romania)
Eu, in graba am incercat asa: (cod luat din class browser)

DEFINE CLASS log AS custom

Height = 15
Width = 24
Name = "log"
msg = .F.


PROCEDURE writelog
Str = DTOC(DATE()) + " - " + TIME()+ this.msg + ;
+ CHR(13) + CHR(10)
StrToFile ( Str, "c:\APP.txt", .T. ) && Apendez to file
ENDPROC


ENDDEFINE

Cand instantiez clasa fac asa:
mylog=newobject('log')
mylog.msg='mesaj de scris'
mylog.writelog()
Si, culmea pentru mine :) si functioneaza. Daca vreau sa dau release la clasa cum fac? Ma refer daca vreau sa o inchid. Ce adaugri la aceasta clasa imi recomandati ?

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 9/26/2006 1:46:44 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (N/A)

:)

Release MyLog
sau
MyLog = .NULL.

Eu ti-as recomanda un VerboseLevel, ca sa poti filtra din clasa cantitatea de mesaje logate. mylog.verboselevel = 0 - se scriu numai mesajele critice, de genul MyLog.Msg = "0,Mesaj critic". MyLog.Msg = "2,Mesaj non-critic" nu ajunge in log decat daca MyLog.VerboseLevel >=2.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/26/2006 1:56:09 PM
User is offlineAlin Berce
371 posts
3rd




Re: aplicatia sa faca log
 (Romania)
:) eu scriam MyLog.relase.
Foarte interesanta treaba cu VerboseLevel. Acum mi-am amintit ca la RoadShow ai zis de asa ceva. Imi place modul in care ai realizat-o. Simplu si eficient. Si banuiesc ca transmit ca parametru acest VerboseLevel programului principal sau il am ca optine in aplicatie.
Hmmm... Back to the drawing board.

Mai trebuie sa fac un modul care trimite fisierul respectiv prin email si gata... am toata infomatia de care am nevoie pentru debugging. Nu ceva de genul: "Da' nu mai porneste programu'" Cand se intampla, pe ce ati apasat? "Euuu, pe nimic, asa dintr-o data..."

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 9/26/2006 2:02:33 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (N/A)

O sa fac un pustiu de bine si o sa postez codul clasei mele de auditare (din framework-ul pe care l-ai vazut la Oradea). Citeste cine vrea, intelege cine poate. Un singur comentariu am de adaugat: pentru fiecare linie de cod de mai jos am o explicatie foarte bine argumentata, chiar daca pare ca m-am complicat.

**************************************************
*-- Class: b_auditmgr (c:\dev\vfp\framework\common\libs\b_auditmgr.vcx)
*-- ParentClass: b_cus (c:\dev\vfp\framework\common\libs\b_controls.vcx)
*-- BaseClass: custom
*-- Time Stamp: 02/24/06 11:03:06 AM
*-- B-Layer Audit Manager class.
*

#INCLUDE "c:\dev\vfp\framework\common\include\main.h"
*

DEFINE CLASS b_auditmgr AS
b_cus

*-- Full path of the audit file.
auditfilename = ""
*-- If .T., the audit file will be created automatically.
autocreateauditfile =
.T.
*-- A string that will be used as separator.
logseparator = --------------------------------------------------------------------------------

*-- If .T., the content of the audit file won't be overwritten, even parameters specify so. Useful in debugging.
prohibitoverwritingauditfile = .F.
*-- Level of verbosity. 0 is minimum, 3 is maximum. Only the entries which have VerboseLevel parameter greater than this value will be logged.
verboselevel =
0

_memberdata = [<VFPData><memberdata name="auditfilename" type="property" display="AuditFileName"/><memberdata name="log" type="method" display="Log"/><memberdata name="checkauditfile" type="method" display="CheckAuditFile"/><memberdata name="writetoauditfile" type="method" display="WriteToAuditFile"/><memberdata name="autocreateauditfile" type="property" display="AutoCreateAuditFile"/><memberdata name="createauditfile" type="method" display="CreateAuditFile"/><memberdata name="logseparator" type="property" display="LogSeparator"/><memberdata name="prohibitoverwritingauditfile" type="property" display="ProhibitOverwritingAuditFile"/><memberdata name="verboselevel" type="property" display="VerboseLevel"/></VFPData
>

Name =
"b_auditmgr"

*-- Writes information in .AuditFileName file.
PROCEDURE log
**********************************************************************
* Program....: B-AuditMgr.Log()
* Version....:
* Author.....: Grigore Dolghin ::
mailto:gdolghin@yahoo.com
* Date.......: 04 November 2005, 11:54:47
* Notice.....: Copyright © 2005, Class Software.
* Compiler...: Visual FoxPro 09.00.0000.3307 for Windows
* Abstract...:
* Changes....: Administrator, Created 04 November 2005 / 11:54:47
* Parameters.: tnVerboseLevel, integer. Level of verbosity - 0 to 3.
* ...........: tcLogEntry, character. Text to be logged.
* ...........: tlIncludeSeparator, boolean. If .T., a line will be
* ...........: drawn, to separate sessions.
* ...........: tlNewLoggingSession, boolean. If .T., a separator is
* ...........: drawn.
* Called by..:
* Purpose....: Writes the information in file specified in
* ...........: .AuditFileName property.
**********************************************************************
Lparameters tnVerboseLevel, tcLogEntry, tlIncludeSeparator,
tlNewLoggingSession
Local
;
   
llSuccess As Boolean
, ;
   
lcOldSetSafety
As String

*** Parameters checking:
If Vartype(tnVerboseLevel) <> TypeNumeric
Or ;
      Not
Between(tnVerboseLevel,0,3
)
   
tnVerboseLevel =
3
EndIf

If Vartype
(tcLogEntry) <> TypeCharacter
Or ;
      
Empty(tcLogEntry
)
   
Return
llSuccess
EndIf

If Vartype
(tlIncludeSeparator) <>
TypeLogical
   tlIncludeSeparator
=
False
EndIf

If Vartype
(tlNewLoggingSession) <>
TypeLogical
   tlNewLoggingSession
=
False
EndIf

*** This method is called first time at very beginning, before
*** EnvironmentMgr to have any chance to set the environment.
*** For this reason I need to Set Safety Off by myself, because
*** it comes set to ON by default:
lcOldSafety = Set("Safety"
)
Set Safety Off

With This
   Do Case
      Case
! .CheckAuditFile(tlNewLoggingSession
)
      
Case ! .WriteToAuditFile(tnVerboseLevel, tcLogEntry, tlIncludeSeparator
)
      Otherwise
         
llSuccess =
True
   EndCase
EndWith

Set Safety
&
lcOldSafety
Return
llSuccess
ENDPROC

*-- Checks if audit file does exists and it is ready to be used.
PROCEDURE
checkauditfile
**********************************************************************
* Program....: B-AuditMgr.CheckAuditFile
* Version....:
* Author.....: Grigore Dolghin ::
mailto:gdolghin@yahoo.com
* Date.......: 04 November 2005, 12:01:34
* Notice.....: Copyright © 2005, Class Software.
* Compiler...: Visual FoxPro 09.00.0000.3307 for Windows
* Abstract...:
* Changes....: Administrator, Created 04 November 2005 / 12:01:34
* Parameters.: tlNewLoggingSession, boolean. If .T., the audit file
* ...........: content is erased.
* Called by..:
* Purpose....: Checks if audit file does exists and it is ready to be
* ...........: used.
**********************************************************************
Lparameters
tlNewLoggingSession
Local llSuccess As
Boolean

With This
   If
Not Empty(.AuditFileName
)
   
*** We have an audit file defined.
      If File(FullPath(.AuditFileName
))
      
*** It does exists...
         
llSuccess =
True
         
If tlNewLoggingSession And Not .
ProhibitOverwritingAuditFile
         *** however, user said it should be overwritten
            llSuccess = .CreateAuditFile
()
         
EndIf
      Else
      
*** The audit file doesn't exist on disk. Let's see if we
      *** can create it:
         
If .
AutoCreateAuditFile
         *** Yes, we can.
            
llSuccess = .CreateAuditFile
()
         
EndIf
      EndIf
   
EndIf
EndWith
Return
llSuccess
ENDPROC

*-- Records the operation to audit file.
PROCEDURE
writetoauditfile
**********************************************************************
* Program....: B-AuditMgr.WriteToAuditFile()
* Version....:
* Author.....: Grigore Dolghin ::
mailto:gdolghin@yahoo.com
* Date.......: 04 November 2005, 12:12:19
* Notice.....: Copyright © 2005, Class Software.
* Compiler...: Visual FoxPro 09.00.0000.3307 for Windows
* Abstract...:
* Changes....: Administrator, Created 04 November 2005 / 12:12:19
* Parameters.: tnVerboseLevel, numeric. Level of verbosity.
* ...........: tcLogEntry, character. Text to be logged.
* ...........: tlIncludeSeparator, boolean. If .T., a line is drawn.
* Called by..:
* Purpose....: Records the operation to audit file. The operation will
* ...........: be logged only if the tnVerboseLevel parameter is
* ...........: equal or greater than .VerboseLevel property.
**********************************************************************
Lparameters tnVerboseLevel, tcLogEntry,
tlIncludeSeparator
Local
;
      
llSuccess As Boolean
, ;
      
lcDateTime As String
, ;
      
lnResult
As String

lcDateTime = Padr(Ttoc(Datetime()), 23, " ") +
": "
tcLogEntry = tcLogEntry +
CRLF

With This
   If
.VerboseLevel >=
tnVerboseLevel
      
If
tlIncludeSeparator
         lnResult
= StrToFile(CRLF + .LogSeparator + CRLF, .AuditFileName, 1
)
      
EndIf
      lnResult = StrToFile(lcDateTime + tcLogEntry, .AuditFileName, 1
)
      
llSuccess = (lnResult <> 0
)
   Else
      
*** The operation has verbosity level lower than acceptable. However,
      *** I'll return True, because there is no error.
      
llSuccess =
True
   
EndIf
EndWith
Return
llSuccess
ENDPROC

*-- Creates the audit file.
PROCEDURE createauditfile
**********************************************************************
* Program....: B-AuditMgr.CreateAuditFile
* Version....:
* Author.....: Grigore Dolghin ::
mailto:gdolghin@yahoo.com
* Date.......: 04 November 2005, 12:55:05
* Notice.....: Copyright © 2005, Class Software.
* Compiler...: Visual FoxPro 09.00.0000.3307 for Windows
* Abstract...:
* Changes....: Administrator, Created 04 November 2005 / 12:55:05
* Parameters.:
* Called by..:
* Purpose....: Creates the audit file, if .AutoCreateAudit file is
* ...........: .T. and the file is missing from disk.
**********************************************************************
Local llSuccess As
Boolean

With This
   If Vartype
(.AuditFileName) == TypeCharacter
      
Try
         *** I'll use Try...Catch here because it may be possible to have no write righs to that folder
         StrToFile
(EmptyString,.AuditFileName
)
         
Catch To
oError
      
EndTry
      If Vartype
(oError) =
TypeUndefined
         
*** No errors occured
         
llSuccess =
True
      
EndIf
   EndIf
EndWith
Return
llSuccess
ENDPROC

PROCEDURE Init
**********************************************************************
* Program....: B-AuditMgr.Init
* Version....:
* Author.....: Grigore Dolghin ::
mailto:gdolghin@yahoo.com
* Date.......: 04 November 2005, 03:09:22
* Notice.....: Copyright © 2005, Class Software.
* Compiler...: Visual FoxPro 09.00.0000.3307 for Windows
* Abstract...:
* Changes....: Administrator, Created 04 November 2005 / 03:09:22
* Parameters.:
* Called by..:
* Purpose....:
**********************************************************************
ENDPROC
ENDDEFINE
*
*-- EndDefine: b_auditmgr
**************************************************


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/26/2006 2:21:38 PM
User is offlineAlin Berce
371 posts
3rd




Re: aplicatia sa faca log
 (Romania)
Multumesc Grig. O initiativa mai mult decat laudabila. L-am listat si ma pun sa studiez. Oricum mai am muuuult de invatat pana sa scriu cod asa. Il iau pe bucatele si incerc sa il inteleg.

Great. Great. Great.

VFP, C#, SQL Server 2005/2008
"Proud to be a ProFox member".
 9/26/2006 3:13:51 PM
User is offlineedyshor
1450 posts
1st




Re: aplicatia sa faca log
 (N/A)
Te-ai complicat un pic Gig :)
 9/26/2006 3:20:34 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (N/A)

Well.... nu, nu m-am complicat. Am pornit de la premiza ca nu stiu nimic despre cum va functiona clasa in real-life. Ea este destinata programatorului, care ar putea avea alte necesitati decat mine. CreateAuditFile() pare o tampenie, din moment ce STRTOFILE() oricum creeaza fisierul de audit. Dar daca programatorul vrea sa foloseasca O TABELA INTR-UN SERVER SQL pentru a tine log-ul? Huh? StrToFile zboara din schema, si in cazul asta CreateAuditFile() va trebui suprascris pentru a permite un CREATE TABLE. Este adevarat ca eu in framework ofer niste servicii, dar acestea pot fi suprascrise in subclase pentru a permite actualizarea. De-aia exista CreateAuditFile, de-aia exista ProhibitOverwritingAuditFile, etc., etc., etc.

Am incercat sa privesc dincolo de necesitatile imediate (recte - StrToFile -> scrierea intr-un fisier text). "Dar daca ala vrea sa faca cutare lucru?" Raspunsul e unul singur: cresc granularitatea procesului pana la punctul in care orice-as vrea sa fac - am o metoda care-mi da voie sa fac lucrul respectiv.

Acum mai pare atat de complicat?


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/26/2006 4:26:59 PM
User is offlineedyshor
1450 posts
1st




Re: aplicatia sa faca log
 (N/A)
well .. nu .. asa lucrez si eu sa-mi suprascriu metodele daca am nevoie ..
ma refeream la ..
 
#INCLUDE "c:\dev\vfp\framework\common\include\main.h"
If Vartype(tnVerboseLevel) <> TypeNumeric Or Not Between(tnVerboseLevel,0,3)
banuiesc ca in "main.h" ai TypeNumeric="N" .. si daca "tnVerboseLevel" nu-i "N" ci "C" de ex, linia o sa-ti dea eroare la "Between(.."
 
iar .. Vartype(oError) = TypeUndefined unde probabil TypeUndefined = "U" ?! .. e posibil ca microsoft sa valorile intoarse de vartype ?!
 
bine, poate aveai altceva in minte atunci, eu nu vad decat ca ai scris mai mult (si in doua fisiere) cand se putea mai simplu .. atata tot :)
 9/26/2006 4:53:29 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (N/A)

*** Parameters checking:
If Vartype(tnVerboseLevel) <> TypeNumeric
Or ;
      Not
Between(tnVerboseLevel,0,3
)
   
tnVerboseLevel =
3
EndIf

VerboseLevel nu poate fi altceva decat numeric. Daca primesc altceva, il fac eu 3 inainte de a continua executia. Ca atare, o eroare la linia cu Between este exclusa.

Am scris in doua fisiere, din care unul este fisierul .H, care contine definitia constantelor, folosite peste tot in program. Nu stiu daca este posibil ca Microsoft va schimba valorile intoarse de vartype (pentru alte functii le-a schimbat - vezi TableUpdate() de-a lungul versiunilor de VFP), dar daca o va face vreodata, eu o sa fiu pregatit: modific intr-un H, in loc sa vanez in posibil sute/mii de locuri din cod.

Any other questions, please?

 

 


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/26/2006 8:02:21 PM
User is offlineedyshor
1450 posts
1st




Re: aplicatia sa faca log
 (N/A)
ok am inteles, si astazi am invatat ceva nou .. ciudat e ca intr-o situatie asemantoare mi-a dat eroare chiar si asa cum e prezentata linia dar ..
oh well :)
 
If Vartype(tnVerboseLevel) <> "N" Or Not Between(tnVerboseLevel,0,3)
nu da eroare, pe cand ..
If Not Between(tnVerboseLevel,0,3Or Vartype(tnVerboseLevel) <> "N"
da eroare, ca tnVerboseLevel nu-i de acelasi tip (numeric) cu 0,3
 
le-am bagat intr-un modi comm sa ma conving :) se pare ca odata ce nu indeplineste prima conditie nu se duce sa o verifice si pe a doua si asa scapi
eu credeam ca verifica linie cu linie, si acesta ar fi motivul pentru care secventa
If Vartype(tnVerboseLevel) <> TypeNumeric Or ;
      Not
Between(tnVerboseLevel,0,3
)
nu da eroare .. desi intelesesem (din nush ce carte) ca liniile se concateneaza in cazul asta (";")
 
azi am invatat ceva nou .. mersi Grig :)
dar eu tot as fi folosit "N" in loc de TypeNumeric :P
 9/26/2006 10:58:42 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (N/A)
 edyshor wrote
[...]
dar eu tot as fi folosit "N" in loc de TypeNumeric :P


De gustibus....

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/27/2006 9:30:44 AM
User is offlineaflorin
840 posts
1st


Re: aplicatia sa faca log
 (Romania)
If Vartype(tnVerboseLevel) <> "N" Or Not Between(tnVerboseLevel,0,3)

sa inteleg ca intr-adevar chiar asa este?
adica daca intr-o astfel de conditie unita cu OR, daca prima parte este .T. nu se mai verifica a doua? Sa mor daca am vazut pe undeva scrisa treaba asta...

Si cand ma gandesc ca am stat si am refacut bucati de cod scrise (de altcineva) in maniera asta ...

Florin Aparaschivei - Iasi
 9/27/2006 9:37:23 AM
User is offlineaflorin
840 posts
1st


Re: aplicatia sa faca log
 (Romania) Modified By aflorin  on 9/27/2006 9:37:50 AM)
Totusi am si eu o intrebare la codul de mai sus, daca tot e vorba de invatat lucruri noi...

care este rolul acelui _memberdata?

Florin Aparaschivei - Iasi
 9/27/2006 11:23:56 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (N/A)
E introdus in VFP9 si contine capitalizarea pentru fiecare PEM in parte, astfel incat in fereastra de proprietati nu vezi "prohibitoverwritingautitfile", ci "ProhibitOverwritingAuditFile".
Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/27/2006 11:27:07 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (N/A)

 aflorin27 wrote
If Vartype(tnVerboseLevel) <> "N" Or Not Between(tnVerboseLevel,0,3)

sa inteleg ca intr-adevar chiar asa este?
adica daca intr-o astfel de conditie unita cu OR, daca prima parte este .T. nu se mai verifica a doua? Sa mor daca am vazut pe undeva scrisa treaba asta...

Si cand ma gandesc ca am stat si am refacut bucati de cod scrise (de altcineva) in maniera asta ...

OR returneaza .T. daca cel putin una din evaluari este .T. Parsarea codului se opreste la prima conditie care intoarce .T. - celelalte nu mai conteaza. Daca vrei neaparat sa se execute toate trebuie sa folosesti un AND, la modul urmator:

If Vartype(tnVerboseLevel) == "N" And Between(tnVerboseLevel,0,3)


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/27/2006 11:28:38 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (N/A)

Nota personala: constat cu supriza ca bucata de cod pe care am postat-o a facut destul de multe "valuri". Hm..... si daca ati sti cate chestii interesante mai am de aratat..... :)


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/27/2006 11:49:58 AM
User is offlineaflorin
840 posts
1st


Re: aplicatia sa faca log
 (Romania)
OK, mersi. M-am mai luminat cu o chestie pe ziua de azi.
Florin Aparaschivei - Iasi
 9/27/2006 2:51:20 PM
User is offlineedyshor
1450 posts
1st




Re: aplicatia sa faca log
 (N/A)
 Grigore Dolghin wrote
E introdus in VFP9 si contine capitalizarea pentru fiecare PEM in parte, astfel incat in fereastra de proprietati nu vezi "prohibitoverwritingautitfile", ci "ProhibitOverwritingAuditFile".
si asta-i cel mai "nesemnificativ" avantaj al ei .. mie-mi place la nebunie facilitatea ca pot creea un script pentru o proprietate -> propery editor
 9/27/2006 2:55:56 PM
User is offlineedyshor
1450 posts
1st




Re: aplicatia sa faca log
 (N/A)
 Grigore Dolghin wrote
[..]  If Vartype(tnVerboseLevel) == "N" And Between(tnVerboseLevel,0,3)
asta explica erorile care mi-au dat de inteles ca nu pot face testul asta pe o singura linie (foloseam AND in loc de OR) ..
desi acum cand le am in fata .. e logic .. si totusi nu mi-a picat fisa .. am presupus ca vfp evalueaza linie cu linie ..
 
acum stiu mai bine .. o sa-mi fie folositoare chestia asta .. :D
 9/27/2006 3:01:04 PM
User is offlineedyshor
1450 posts
1st




Re: aplicatia sa faca log
 (N/A)
 Grigore Dolghin wrote

Nota personala: constat cu supriza ca bucata de cod pe care am postat-o a facut destul de multe "valuri". Hm..... si daca ati sti cate chestii interesante mai am de aratat..... :)

 
Grig, nu-mi pot permite acum sa vin la cursul de vfp9 pe care il organizezi (mi-ar acoperi cateva lacune) .. dar poate discutam mai multe la o bere cand trec prin bucuresti, in drum spre casa :)
 10/11/2006 11:15:04 PM
User is offlinePetre Popescu
253 posts
4th


Re: aplicatia sa faca log
 (N/A) Modified By Petre Popescu  on 10/11/2006 11:21:41 PM)
 Grigore Dolghin wrote

PROCEDURE writetoauditfile
* Purpose....: Records the operation to audit file. The operation will
* ...........: be logged only if the tnVerboseLevel parameter is
* ...........: equal or greater than .VerboseLevel property.
With This
   If
.VerboseLevel >=
tnVerboseLevel
**************************************************

Poate intre timp ati corectat sau imi scapa mie ceva la ora asta tarzie dar pare ca ar trebui invers:

If tnVerboseLevel >= .VerboseLevel

Multumesc pentru clasa:

1. Buna ca functionalitate.

2. De o mie de ori mai buna ca si "UITE ...CAM ASA SE SCRIE UN COD "

 10/15/2006 3:09:02 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: aplicatia sa faca log
 (Romania)

Comentariul este gresit. Initial asa era, apoi am modificat codul, dar n-am mai modificat comentariul. Ideea e ca daca am setat clasa pe 2, se logheaza numai 0, 1 si 2. 3 sare din schema. Deci... If .VerboseLevel >= tnVerboseLevel. .VerboseLevel e setarea clasei, tnVerboseLevel vine din stringul care trebuie logat.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/15/2006 9:11:26 AM
User is offlinePetre Popescu
253 posts
4th


Re: aplicatia sa faca log
 (N/A)
 Grigore Dolghin wrote

Comentariul este gresit. Initial asa era, apoi am modificat codul, dar n-am mai modificat comentariul. Ideea e ca daca am setat clasa pe 2, se logheaza numai 0, 1 si 2. 3 sare din schema. Deci... If .VerboseLevel >= tnVerboseLevel. .VerboseLevel e setarea clasei, tnVerboseLevel vine din stringul care trebuie logat.

Am presupus initial ca nivelul 0 este cel cu prioritatea cea mai mica (motiv profesional fara legatura cu programarea, cu cat acel nivel este mai mare cu atat este mai important).

Dupa ce m-am mai gandit un pic ...  intradevar este cea mai buna abordare. Definesc de la inceput ca pe nivelul 0 am cele mai importante evenimente de inregistrat in logger, pe nivelul 1 alte evenimente dar cu prioritate mai mica samd. In felul acesta pot sa adaug cate nivele doresc.

In varianta presupusa de mine nu mai era posibila adaugare de noi nivele de prioritate fara a modifica structura celor deja existente.

  Visual FoxPro  Visual FoxPro in general  aplicatia sa fa...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement