Newsgroup: it.comp.lang.vo-clipper
Titolo: string2psz

Buon pomeriggio
 
posso chiedere, per favore, di conoscere la differenza tra :
 
string
string2psz
stringwsymbol ?
 
premesso che string è la normale stringa di caratteri ?
 
come sempre grazie
 
aurora baccio

 stringwsymbol ?
 
converte una stringa in un simbolo, generalmente definito con il
cancelletto: #Valore.
Un simbolo  in fondo è una variabile numerica, perciò anche la
comparazione è velocissima, ma allo stesso momento leggibile.
VO usa internamente i simboli per motivi di velocità, e anche io
stesso le uso moltissimo. Praticamente a ogni simbolo viene assegnato
un valore numerico che poi viene usato nelle comparazioni.
Purtroppo nel mondo .NET questa praticità è andata persa - dicono
perchè le comparazioni di stringhe sono diventate velocissime.
 
Deve sapere che le origini di VO risalgono ai tempi di Windows 3.1 (per
la versione 1.0/16 Bit) e Windows 95 (per la versione 2.x/32 Bit), dove
erano prevalenti i processori 80486 da 33 Mhz in su con 4 MB di
memoria. La mia macchina di sviluppo a suo tempo (1996) era un 486 da
100 Mhz. La prima serie di Pentium uscita in quei tempi erano da 25 Mhz
(!).
Perciò la performance era importantissima.
 
Saluti
 
Wolfgang
 
-- 
 


Grazie della risposta signor Riedmann,
il punto è questo comando :
 
oServer := CreateInstance(String2Symbol(aDBLavoro[x,1]),,FALSE)  
 
creato per facilitare la costruzione degli indici dei dbf
dove aDBLavoro è un array a due dimensione contenente i nome dei file che dovrebbero essere indicizzati.
dal file log rilevo :
 
Error Code:  14 [ VARIABLE DOES NOT EXIST ]
Subsystem: BASE
Function: CREATEINSTANCE
Argument:                              6
CallStack:
INDICIANNUALI (Line:43)
MAINWINDOW:GESTIONEINDICIANNUALI (Line:3)
ELENCOPAZIENTI_BROWSE:DISPATCH (Line:13)
APP:START (Line:206)
START (Line:6)
 
Error Object created:
--------------------
SubSystem       :BASE
SubCode         :0
GenCode         :Variable does not exist
OsCode          :0
ArgType         :NIL
FuncPtr         :0x013FBF69
ArgNum          :0
FuncSym         :CREATEINSTANCE
Severity        :0
CanDefault      :.F.
CanRetry        :.F.
CanSubstitute   :.T.
Operation       :
Description     :
FileName        :
Tries           :0
FileHandle      :0
SubCodeText     :
Arg             :                             6
ArgTypeReq      :NIL
MaxSize         :0
SubstituteType  :OBJECT
CallFuncSym     :
--------------------
 
pensavo di avere errato ma dalla sua rsposta penso di avere scritto in maniera corretta.
Al solito in argument vi è un numero, e non so a cosa corrisponde .
 
grazie
Aurora Baccio

Il giorno martedì 21 agosto 2018 18:17:06 UTC+2, 
aurora...@gmail.com
 ha scritto:

risolto il problema,
avevo eliminato il primo degli archivi dell'array, ma non avevo corretto lo stesso. Era pertanto corretto che la variabile non esisteva.
Il punto rimane nel sistema di rilevazione dell'errore. Se in Argument veniva scritto COD01 (l'archivio eliminato) non avrei trascorso un paio d'ore a sbattere la testa, e soprattutto non disturbavo inutilmente questo ng.
Comunque grazie
Aurora Baccio
 

Buon giorno Aurora,
 
nel momento nel quale si lavora con funzioni avanzate come
CreateInstance() i controlli del compilatore vengono esclusi, e
ovviamente poi anche la ricerca di eventuali errori diventa più
difficoltosa - in effetti invece dell'errore di "classe non esistente"
si riceve un errore che un parametro non è esatto.
 
Per quanto rigurda il "disturbo": spero che ne abbia imparato qualcosa,
e in questo caso non si parla di inutile.
 
Saluti
 
Wolfgang

--