* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Novembre 24, 2024, 02:29:48 pm

Inserisci il nome utente, la password e la durata della sessione.

52 Visitatori, 0 Utenti

Autore Topic: Utilizzo di "nwcalls"  (Letto 11359 volte)

bonmario

  • Hero Member
  • *****
  • Post: 1360
  • Karma: +11/-1
Utilizzo di "nwcalls"
« il: Marzo 20, 2012, 09:00:42 am »
Ciao a tutti,
dovrei fare un programma che mi permette di capire chi sta allocando un file in una rete Novell.
Ho fatto un po' di ricerche in giro ed ho capito che dovrei usare alcune finzioni dichiarate nel sorgente "nwcalls .pas" che si trova in "C:\Lazarus\fpc\2.6.0\source\rtl\netware".

Ho iniziato mettendo nel mio programma il richiamo a "NWCallsInit", ma non compila. L'errore è il seguente:
Codice: [Seleziona]
unit1.pas(38,24) Error: Identifier not found "NWCallsInit"

Ho provato ad aggiungere tra le uses "nwcalls", ma non compila. Ho provato ad aggiungere la directory "C:\Lazarus\fpc\2.6.0\source\rtl\netware" nei percosi delle altre unit, ma non funziona ugualmente.

C'è qualcuno ha già fatto qualcosa del genere e mi può aiutare a capire come andare avanti?

Grazie, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3276
  • Karma: +12/-0
Re:Utilizzo di "nwcalls"
« Risposta #1 il: Marzo 20, 2012, 09:08:33 am »
Io no, ma se mi alleghi un esempio provo a compilarlo io!
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

  • Hero Member
  • *****
  • Post: 1360
  • Karma: +11/-1
Re:Utilizzo di "nwcalls"
« Risposta #2 il: Marzo 20, 2012, 09:13:46 am »
Grazie per la disponibilità.
Ti allego la prova che sto facendo. Per il momento c'è solo la chiamata a NWCallsInit. Nel file compresso c'è anche un estratto di un sorgente in VisualBasic che mi hanno passato e che fa lo stesso lavoro.
Io sto cercando di "tradurlo" in Pascal per poterlo utilizzare in Lazarus.

Grazie ancora, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3276
  • Karma: +12/-0
Re:Utilizzo di "nwcalls"
« Risposta #3 il: Marzo 20, 2012, 04:49:45 pm »
Guarda, non sono riuscito a venirne a capo. Purtroppo in questo periodo ho poco tempo e non riesco a dedicargli tempo. Se qualche altra anima pia trova la soluzione bene, altrimenti ti conviene chiedere aiuto sul forum internazionale e poi quando trovi la risposta ci fai sapere come si fa!
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Utilizzo di "nwcalls"
« Risposta #4 il: Marzo 20, 2012, 05:42:39 pm »
NWCallsInit dovrebbe essere una procedura che si trova nelle librerie client novell
non sono esperto in questa cosa ma dovresti assicurarti di avere client novell installati
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1360
  • Karma: +11/-1
Re:Utilizzo di "nwcalls"
« Risposta #5 il: Marzo 20, 2012, 08:29:17 pm »
Per xinyiman: Figurati, ti ringrazio comunque per la disponibilità

Per nomorelogic: Sì, il client novell è perfettamente funzionante, anche perché in caso contrario non mi connetterei alla rete aziendale!!!
In ogni caso, il programma fatto in VisualBasic di cui ho allegato un estratto, funziona, quindi il problema non dovrebbe essere lì.

Stasera prima di uscire dal lavoro ho trovato per caso sul sito della Novell dei sorgenti per Delphi in cui c'era, tra le altre cose, la dichiarazione di NWCallsInit. Domani provo con quelli.

Ciao e grazie ancora, Mario

bonmario

  • Hero Member
  • *****
  • Post: 1360
  • Karma: +11/-1
Re:Utilizzo di "nwcalls"
« Risposta #6 il: Marzo 21, 2012, 08:26:12 am »
Allora,
ho provato con i sorgenti scaricati dal sito Novell. Ho aggiunto in testa ad un paio di unit l'istruzione
Codice: [Seleziona]
{$mode Delphi}{$H+}
e adesso qualcosa funziona ...

Seguendo l'estratto del programma di VisualBasic, riesco ad eseguire le seguenti funzioni:
NWCallsInit
GetShortPathName
NWParsePath


Purtroppo poi però il programma mi si pianta eseguendo la seguente istruzione:
Codice: [Seleziona]
ccode:=NWScanConnectionsUsingFile(conn, 0, PChar(PathN), intHandle, fileUse, fileised);

Mi esce questo errore:
Codice: [Seleziona]
Il progetto project1 ha sollevato una eccezione di classe 'External: SIGSEGV'

At address 50D40D8B

Dando l'ok mi si apre una finestra di assembler.

Questa è la dichiarazione della funzione NWScanConnectionsUsingFile:
Codice: [Seleziona]
    Function NWScanConnectionsUsingFile (
        conn  :   NWCONN_HANDLE ;
        dirHandle  :   NWDIR_HANDLE ;
        const filePath  :   pnstr8 ;
        iterhandle  :   pnint16 ;
        Var fileUse  : CONN_USING_FILE;
        Var fileUsed  : CONNS_USING_FILE
    ) : NWCCODE;
    stdcall;

Purtroppo non ho mai usato funzioni che usino la "stdcall". Sapete darmi qualche indicazione per cercare di capire dov'è il problema?

Grazie, Mario

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Utilizzo di "nwcalls"
« Risposta #7 il: Marzo 21, 2012, 10:34:35 am »
"stdcall" è una convenzione di chiamata delle procedure contenute nelle librerie (dll / so). in pratica è la convenzione per la lettura dei parametri in memoria e stabilisce che si legge da destra verso sinistra.

ogni volta che si usa una dll/so è obbligatorio sapere quale convenzione è stata usata per la compilazione ed usare la stessa per richiamarne le procedure contenute.

se le librerie sono state scritte in pascal solitamente la convenzione di default è "register" il che vuol dire che non viene allocata memoria per il passasggio dei parametri ma si usano i registri... molto più veloce ovviamente :)
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1360
  • Karma: +11/-1
Re:Utilizzo di "nwcalls"
« Risposta #8 il: Marzo 21, 2012, 06:23:54 pm »
Quindi mi stai dicendo che mi da il "SIGSEGV" perché c'è qualche parametro sbagliato nella chiamata che faccio, oppure non ho capito niente ?????

Grazie, Mario

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Utilizzo di "nwcalls"
« Risposta #9 il: Marzo 21, 2012, 06:34:45 pm »
SIGSEGV potrebbe infatti dipendere da questa dichiarazione, è una cosa sicuramente da controllare ed è anche semplice farlo:
se la procedura è stata compilata con "stdcall" (come si vede dal codice che hai postato tu) allora nella tua dichiarazione devi riportare "stdcall".

in pratica la tua dichiarazione dovrebbe essere:

Codice: [Seleziona]
   Function NWScanConnectionsUsingFile (
        conn  :   NWCONN_HANDLE ;
        dirHandle  :   NWDIR_HANDLE ;
        const filePath  :   pnstr8 ;
        iterhandle  :   pnint16 ;
        Var fileUse  : CONN_USING_FILE;
        Var fileUsed  : CONNS_USING_FILE
    ) : NWCCODE;
    stdcall; external 'nome_della_libreria.dll';
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1360
  • Karma: +11/-1
Re:Utilizzo di "nwcalls"
« Risposta #10 il: Marzo 22, 2012, 08:18:27 am »
Niente da fare, non è nemmeno quello.
Guardando la unit messa a disposizione da Novell, ho visto che nell'implementation c'è questa istruzione:
Codice: [Seleziona]
    {$I calwin32.imp}

Il file in oggetto a sua volta contiene questa:
Codice: [Seleziona]
function NWScanConnectionsUsingFile;  StdCall; external 'calwin32.dll' index 361;

Quindi la chiamata dovrebbe essere corretta.

Qualche altra idea?

Grazie, Mario

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Utilizzo di "nwcalls"
« Risposta #11 il: Marzo 22, 2012, 08:53:20 am »
hai già provato a postare qualcosa anche sul forum ufficiale?
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1360
  • Karma: +11/-1
Re:Utilizzo di "nwcalls"
« Risposta #12 il: Marzo 22, 2012, 01:33:48 pm »
Non ancora ... mi sto documentando e sto facendo un po' di prove. Se per fine settimana non ci sono riuscito, provo a chiedere.
Poi ci metto un po' a "tradurre" la domanda: il mio inglese è mooooolto scarso !!!!
In ogni caso, appena trovo una soluzione la scrivo qui.

Ciao, Mario

bonmario

  • Hero Member
  • *****
  • Post: 1360
  • Karma: +11/-1
Re:Utilizzo di "nwcalls"
« Risposta #13 il: Marzo 22, 2012, 01:53:34 pm »
Trovato: dovevo mettere una chiocciolina in più ad un parametro. La chiamata corretta è questa:
Codice: [Seleziona]
ccode:=NWScanConnectionsUsingFile(conn, 0, PChar(PathN), @intHandle, fileUse, fileised);

Ciao e grazie a tutti per l'aiuto !!!!!

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3276
  • Karma: +12/-0
Re:Utilizzo di "nwcalls"
« Risposta #14 il: Marzo 22, 2012, 02:37:21 pm »
Son contento che hai risolto  ;)
Ieri è passato, domani è futuro, oggi è un dono...

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19182
  • Topic in totale: 2288
  • Online Today: 97
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 52
Total: 52

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.