Newsgroup: it.comp.lang.delphi
Titolo: Alcune dmande da un principiante.

Ciao a tutti.
Ho da poco preso in mano Delphi (che devo dire mi fa impazzire) (vengo
da VB).Mi trovo a ricorrere a voi per tentare di risolvere un paio di
problemi ai quali non vengo  a capo (benche' abbia guardato l'help e
la guida).Se qualcuno fosse cosi' gentile da darmi una mano sarei
felice.
Allora, primo problema.
Se ho una lista di stringhe (per esempio in una listbox (o in un
file)), come posso contare quanto occorrenze ci sono di ogni singola
stringa ?? Per esempio data la lista:
Marco
Pietro
Sonia
Marco
Sonia
Marco
Marco
Pietro
Sonia
......
Dovrebbe dare:
Marco 4
Pietro 2
Sonia 3
Immagino debba utilizzare un array (o la proprieta' index... ma non ne
sono venuto a capo)...... qualche suggerimento ???
Secondo problema: 
Non riesco a capire come funziona la funzione scanline......
Per esempio, puo' essere utilizzata per ottenere  i valori di colore
di tutti i pixel di una riga di una bitmap ??
Io adesso utilizzo la funzione pixel...ma se volessi utilizzare la
funzione scanline (che ho letto essere piu' veloce) per mettere in una
listbox tutti i valori di colore della prima riga della bitmap
c:\pippo.bmp potrei farlo ? Ed eventualmente come ???
Ringrazio tutti coloro che sono stati cosi' pazienti di leggere fino a
qui e che mi sapranno dare qualche suggerimento.
Ciao e buon lavoro a tutti.
Fabio

 Non riesco a capire come funziona la funzione scanline......
Ti so aiutare fino ad un certo punto...
Ti rimando ad un esempio di Uberto Barbini sul repository di Mr.Coke
[
news.marcocantu.it
 --> libero.mrcoke-repository] che ti mostra un esempio
pratico davvero carino.
Cmq ti posso dire che se qualcosa di questo tipo:
var P:PbyteArray;
P:= Bitmap.Scanline(Riga);
in P trovi i valori dei colori della riga <Riga> della Bmp...
Personalmente non ho ancora ben capito come si arrivi poi al colore RGB
visto che ogni elemento è un byte e quindi va solo da 0 a 255...
Forse Uberto ci aiuta... :-)
Ciao :-)
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
AntiSpam: rimuovere il trattino basso dall'indirizzo per rispondere
AntiSpam: remove the underscore from the e-mail address to reply


Per contare le occorrenze di una lista di stringhe :
Function CountHowMany(Ts:TStringList; Value: string): integer;
var X: integer;
var Count; integer;
begin
        {imposta il contatore a zero}
         Count:= 0;
        {scansiona la lista e compara ogni elemento con value da 0 in poi}
         for X:= 0 to TS.Count - 1 do
         if TS.Strings[X] = Value then Inc(Count)
        {Restituisci il valore di Count al termine della scansione}
        Result:= Count;
end;
Assumendo che la tua lista di stringhe si chiami LIST (di tipo TStringList)
e che la stringa che devi <contare>  sia MARCO la funzione da richiamare è
la seguente:
{dichiari una variabile di tipo integer}
var Occorrenze: integer;
{chiami la funzione passando la lista in questione ed il valore}
Occorrenze:=  CountHowMany(LIST, 'MARCO').
quando dovrai contare SONIA
Occorrenze:=  CountHowMany(LIST, 'SONIA').
Tieni presente che questa è una semplice funzione, non un metodo di una
classe.
Considera anche che le variabili di tipo TStringList vanno create
  LIST:= TStringList.Create;
ed esplicitamente distrutte quando non più necessarie o nell' evento
OnDestroy della form che le contiene
  LIST.Free;
Per quanto attiene a scanline, non ho mai avuto occasione di usarla,
spiacente.

 Forse Uberto ci aiuta... :-)
Credo che si possa far riferimento alla proprietà Palette dell'oggetto
TBitmap, dovrebbe essere un array di record e ogni record ha 3 campi peRed,
peGreen e peBlue. Il Byte che si ricava dalla scanline non è altro che un
possibile indice dell'array delle palette.
Spero sia tutto corretto.. :/

 Spero sia tutto corretto.. :/
Beh, grazie per l'intervento innanzitutto.
Sì, di sicuro la palette c'entra... ma la prop. Palette di TBitmap è solo un
handle a quella palette (e chi sa come fare ad accedervi?)...
c'è un TMaxLogPalette ma non ho ancora capito come "riempirlo" con i valori
della palette di una data bmp...
