* * * *

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.
Maggio 05, 2024, 12:20:54 pm

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

511 Visitatori, 1 Utente
 

Autore Topic: Libreria systemusers  (Letto 16006 volte)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Libreria systemusers
« il: Agosto 16, 2014, 09:26:19 pm »
Ciao ragazzi questa è la libreria che stò creando per ottenere uno standard multipiattaforma per ottenere le info sugli utenti.

Se guardate l'esempio allegato trovate una prima bozza, al momento attuale ho bisogno di consigli per ricavare dalle info che già stampo sulla memo della form.

Che ne pensate, qual'è il modo più elegante e veloce di ricavarle?! Inoltre come cambiare la data da lettere a numeri?

Si accettano consigli :)
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2873
  • Karma: +20/-4
Re:Libreria systemusers
« Risposta #1 il: Agosto 17, 2014, 10:32:42 am »
la libreria è interessante, specie perché multipiattforma

un paio di consigli:
1) ci sono dei metodi e dell1e variabili che hanno nomi in inglese ed altri in italiano. sarebbe meglio scegliere un'unica lingua per dare i nomi. in un' ottica open source sarebbe meglio l'inglese almeno tutti possono trarne vantaggio (ad esempio per fpc c'è del codice in spagnolo o portoghese: va sempre a finire che queste librerie le scarto a priori :P)

2) ho notato che nelle classi non usi le proprietà ma fai uso di metodi get/set.

Piuttosto che fare:

Codice: [Seleziona]
 
    TMovementOfUser = object
      private
             ...
             procedure setTypeMovement(appvalue: string);
             ...
      public
             ...
             function getTypeMovement: string;
             ...
    end;

sarebbe meglio:

Codice: [Seleziona]
    TMovementOfUser = object
      private
             ...
             procedure setTypeMovement(appvalue: string);
             function getTypeMovement: string;
             ...
      public
             property TypeMovement: string read getTypeMovement write setTypeMovement;

    end;

così è più pratico sia per lo scrivere (basta scrivere la riga "property" e schiacciare Ctrl+C per avere le dichiarazioni dei metodi) che per il leggere.
Inoltre è molto più flessibile: se oggi non hai bisogno dei metodi puoi scrivere:

Codice: [Seleziona]
property TypeMovement: string read FTypeMovement write FTypeMovement;

così ti verrà creata una variabile all'interno della classe e se domani vuoi sostituire la variabile con un metodo non dovrai fare altro che sostituire FTypeMovement con getTypeMovement ed il codice chiamante non dovrà essere modificato
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Libreria systemusers
« Risposta #2 il: Agosto 17, 2014, 01:09:32 pm »
Per i nomi in lingua inglese era già in lista da fare, l'altra idea giustamente come dici tu è più elegante e utile. Provvederò ad aggiornarla...invece per il consiglio su come estrapolare le date e le ore cosa mi consigli? Un'espressione regolare? O cosa?!
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2873
  • Karma: +20/-4
Re:Libreria systemusers
« Risposta #3 il: Agosto 18, 2014, 10:54:28 am »
scusami ma con soli 4 giorni di ferie nel mio cervello s'è verificato un Ctrl+Alt+Canc...

Spiegami meglio qual è il problema dell'estrapolazione delle date e delle ore per favore :P
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Libreria systemusers
« Risposta #4 il: Agosto 18, 2014, 03:20:36 pm »
Nomore, per capire devi eseguire il programma postato qui sopra e vedere il risultato relativo al tuo username. Voglio capire secondo voi qual'è la soluzione migliore per estrapolare dalla singola riga del comando last la data e l'ora del login e logout.

Inoltre ti è arrivata la mia mail?
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Libreria systemusers
« Risposta #5 il: Agosto 19, 2014, 08:41:40 am »
Qualche passo avanti è stato fatto, ma deve essere ancora sistemata meglio
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2873
  • Karma: +20/-4
Re:Libreria systemusers
« Risposta #6 il: Agosto 19, 2014, 12:51:36 pm »
secondo me devi usare l'output in formato iso

Codice: [Seleziona]
last --time-format iso username

in questo modo credo ti resti tutto più facile
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Libreria systemusers
« Risposta #7 il: Agosto 19, 2014, 05:11:38 pm »
già provato ma il risultato è

last --time-format iso


last: invalid option -- '-'
Usage: last [-num | -n num] [-f file] [-t YYYYMMDDHHMMSS] [-R] [-adioxFw] [username..] [tty..]
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Libreria systemusers
« Risposta #8 il: Agosto 19, 2014, 05:22:56 pm »
Infatti.
Ti dice che gli stai passando fiori quando vuole patate.

last username

cosa ti restituisce?
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

El Salvador

  • Visitatore
Re:Libreria systemusers
« Risposta #9 il: Agosto 19, 2014, 05:31:37 pm »
Perchè object e non una classe?

Citazione
TMovementOfUser = object
« Ultima modifica: Agosto 19, 2014, 05:54:46 pm da El Salvador »

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Libreria systemusers
« Risposta #10 il: Agosto 19, 2014, 05:50:47 pm »
Infatti.
Ti dice che gli stai passando fiori quando vuole patate.

last username

cosa ti restituisce?
Stilgar
Quello lo so, stò solo cercando un modo con last che mi restituisca la data in formato numerico e non testuale.
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Libreria systemusers
« Risposta #11 il: Agosto 19, 2014, 05:55:46 pm »
Perchè object e non una classe?

Citazione
TMovementOfUser = object
[/quote
Comodità
Ieri è passato, domani è futuro, oggi è un dono...

El Salvador

  • Visitatore
Re:Libreria systemusers
« Risposta #12 il: Agosto 19, 2014, 06:00:52 pm »
Inoltre non potete cambiare il formato della data dell'output. Non esiste un parametro al commando Last per far questo. http://linux.about.com/library/cmd/blcmdl1_last.htm

Citazione
Comodità
Ovvero?
« Ultima modifica: Agosto 19, 2014, 06:02:44 pm da El Salvador »

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Libreria systemusers
« Risposta #13 il: Agosto 19, 2014, 06:07:14 pm »
Inoltre non potete cambiare il formato della data dell'output. Non esiste un parametro al commando Last per far questo. http://linux.about.com/library/cmd/blcmdl1_last.htm

Citazione
Comodità
Ovvero?

Questo lo sapevo, io speravo in un truschino...

La comodità è che non devo usare la create e la free, siccome uso un array di tali oggetti la mia paura era dimenticarmi di liberare la memoria. con l'object non è necessario
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Libreria systemusers
« Risposta #14 il: Agosto 19, 2014, 10:17:34 pm »
hihi.
Sono sempre quello che si incasina la vita :D

http://code.metager.de/source/xref/gnu/sysvinit/src/last.c

Trovo interessante il comando last. I suoi sorgenti di + ;)

Basta che fai il parsing del file "/var/log/wtmp" 
Il cat butta fuori porcheria illegibile.

Ho trovato http://man7.org/linux/man-pages/man5/utmp.5.html
Da una struttura per la lettura dei file ...

 struct utmp {
               short   ut_type;              /* Type of record */
               pid_t   ut_pid;               /* PID of login process */
               char    ut_line[UT_LINESIZE]; /* Device name of tty - "/dev/" */
               char    ut_id[4];             /* Terminal name suffix,
                                                or inittab(5) ID */
               char    ut_user[UT_NAMESIZE]; /* Username */
               char    ut_host[UT_HOSTSIZE]; /* Hostname for remote login, or
                                                kernel version for run-level
                                                messages */
               struct  exit_status ut_exit;  /* Exit status of a process
                                                marked as DEAD_PROCESS; not
                                                used by Linux init(8) */
               /* The ut_session and ut_tv fields must be the same size when
                  compiled 32- and 64-bit.  This allows data files and shared
                  memory to be shared between 32- and 64-bit applications. */
           #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
               int32_t ut_session;           /* Session ID (getsid(2)),
                                                used for windowing */
               struct {
                   int32_t tv_sec;           /* Seconds */
                   int32_t tv_usec;          /* Microseconds */
               } ut_tv;                      /* Time entry was made */
           #else
                long   ut_session;           /* Session ID */
                struct timeval ut_tv;        /* Time entry was made */
           #endif

               int32_t ut_addr_v6[4];        /* Internet address of remote
                                                host; IPv4 address uses
                                                just ut_addr_v6[0] */
               char __unused[20];            /* Reserved for future use */
           };


Data Type: pid_t
    The pid_t data type is a signed integer type which is capable of representing a process ID. In the GNU library, this is an int.

note :
c/c++ : short signed integer type. At least 16 bits in size. -> pascal:smallint.
i char in c sono "caratteri" ovvero shortint. ;)

http://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html
signed char
The 8-bit signed char data type can hold integer values in the range of −128 to 127.
unsigned char
The 8-bit unsigned char data type can hold integer values in the range of 0 to 255.
char
Depending on your system, the char data type is defined as having the same range as either the signed char or the unsigned char data type (they are three distinct types, however). By convention, you should use the char data type specifically for storing ASCII characters (such as `m'), including escape sequences (such as `\n').

PS:
Linux è open source ... e i comandi gnu altrettanto ... butto lì l'idea del porting dell'api da zero ;)

Stilgar

Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

 

Recenti

How To

Utenti
Stats
  • Post in totale: 18796
  • Topic in totale: 2237
  • Online Today: 515
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 511
Total: 512

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.