Newsgroup: it.comp.lang.delphi
Titolo: tstringlist...help in salvataggio

Allora
mi creo una tstringlist... e la popolo...con caratteri che rappresentano 
numeri..
il problema č che se poi vado a visualizzarla.. non č quella che dico io...
esempio:
procedure salva;
var
sl:tstringlist;
I:integer;
begin
randomize;
sl:=tstringlist.create;
for i := 1 to 10 do
sl.add(char(1)+char(2)+char(3)+char(9)+char(10)+char(random(255)));
sl.savetofile('salvataggio');
sl.free;
procedure Leggi;
var
sl:tstringlist;
x,i:integer;
m:string;
begin
sl:=tstringlist.create;
sl.loadfromfile('salvataggio');
memo1.clear;
for x:= 0 to sl.count-1 do
begin
m:='';
 i:=1;
 repeat
 m:=m+inttostr(ord(sl.strings[x][i]))+'-';inc(i);
 until i>length(sl.strings[x]);
 memo1.lines.add(m);
end;
end;
Qualche soluzione per vedere bene tutti i numeri?

 Qualche soluzione per vedere bene tutti i numeri?
La riga di codice quotata non ha molto senso.
Il resto del codice non l'ho letto, quindi potrebbero esserci altri errori.
Ciao
ACSH
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 errori.
non credo che ci siano errori...la riga che hai quotato č evidentemente una 
riga d'esempio..
corrisponde ad una stringa di 6 caratteri.. che viene salvata in una 
stringlist.
ogni carattere rappresenta un numero... che viene salvato in ascii ....
immagina di voler salvare una serie di numeri.. con numero di elementi 
variabili.... non credo che salvare un array sia la cosa migliore.. 
soprattutto se devi farci dei controlli sulla presenza o meno di elementi..
Fai finta.. vuoi salvare un dato riguardante una persona , vuoi salvare le 
assenze che ha fatto al lavoro mese per mese...
allora fai un record del tipo
persona=record
assenzegennaio:string;
end;
poi nella stringa ci metti i numeri relativi ai giorni di assenza (1, 2, 3, 
7) quindi salvi la stringa.
recuperandola leggendo la lunghezza della stringa saprai quanti giorni in 
totale ha fatto di assenza, e esaminando char x char la stringa .. quali 
sono i giorni...
Spero di essermi spiegato.

 sono i giorni...
No, stai sbagliando approccio. Usa le classi per fare certe cose.
Esempio (da sviluppare ulteriormente)
unit AssenzePersonaPerMese;
interface
uses
  Classes;
type
  TAssenzeMese = class(TBits)
  public
    constructor Create; overload;
    constructor Create(LunghezzaMese: integer; Giorni: array of Integer);
overload;
    function Assente(Giorno: Integer): Boolean;
  end;
implementation
{ TAssenzeMese }
function TAssenzeMese.Assente(Giorno: Integer): Boolean;
// verifico se il tal giorni e' stato assente
begin
 if Giorno < Size then
    Result := Bits[Giorno]
  else
    Result := False;
end;
constructor TAssenzeMese.Create;
begin
  inherited Create;
end;
constructor TAssenzeMese.Create(LunghezzaMese: integer; Giorni: array of
Integer);
Var
 i : integer;
begin
  inherited Create;
  Size := LunghezzaMese;
  for i := Low(Giorni) to High(Giorni) do
   Bits[Giorni[i]] := True
end;
end.
// fine unit
A questo punto hai una classe che puoi utilizzare in questa maniera:
// inizio esempio
uses AssenzePersonaPerMese;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
 prova : TAssenzeMese;
 i : integer;
 strAssenze : string;
begin
 strAssenze := 'Giorni di assenza: ';
// la persona e' stata assente i giorni 1, 4, 9, 10, e 30
// di un mese lungo 31 giorni
prova := TAssenzeMese.Create(31, [1,4,9,10,30]);
 try
   for i := 0 to Prova.Size - 1 do
    if Prova.Assente(i) then
     strAssenze := strAssenze + intToStr(i) + ' ';
   Button1.Caption := strAssenze;
 finally
  prova.free;
 end;
end;
// fine esempio
Ora hai tre possibilita':
1) Salvi un array di integer e ricrei la classe TAssenzeMese quando leggi
dal file;
2) Salvi direttamente la classe (magari creando i metodi SalvaSuFile e
LeggiDaFile) usando uno stream;
3) Crei la classe TPersona che include la classe TAssenzeMese e la sviluppi
ulteriormente;
Ciao
-- 
ACSH
[TurboDelphi]
Chi fa da se', fatica il doppio