Ciao,come potrei fare a salvare il campo Text di un TEdit in un
file? usando il SaveDialog?
Con un componente TMemo basta fare ad esempio:
if SaveDialog.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName)
Dal momento che TEdit non possiede una proprietà simile a quella di
TMemo, c'è qualche modo per aggirare tale ostacolo?
Grazie
ciao
ci sono diversi modi ma il più semplice potrebbe essere:
var: sl: TStringList;
begin
if SaveDialog.Execute then
begin
sl := TStringList.Create;
try
sl.Text := Edit.Text;
sl.SaveToFile(SaveDialog1.FileName)
finally
sl.Free;
end;
end;
end;
Grazie
procedure TForm1.BSalvaClick(Sender: TObject);
var
s: TStringList;
begin
if Savedialog1.Execute then
begin
s := TStringList.Create;
try
s.Text := ESig.Text;
s.SaveToFile(Savedialog1.FileName);
Savedialog1.DefaultExt := 'txt';
Savedialog1.Filter := '*.txt';
finally
s.Free;
end;
end;
end;
I filtri come mai non funzionano?
Se voglio salvare più caselle TEdit come posso fare?
I filtri come mai non funzionano?
perchè li imposti *dopo* aver lanciato il dialog con Execute
vanno impostati prima sennò come fa il dialog a sapere cosa ti deve filtrare? ;)
Se voglio salvare più caselle TEdit come posso fare?
se nello stesso file, ad esempio:
var: sl: TStringList;
begin
if SaveDialog.Execute then
begin
sl := TStringList.Create;
try
sl.Values[Edit1.Name] := Edit1.Text;
sl.Values[Edit2.Name] := Edit2.Text;
sl.Values[Edit3.Name] := Edit3.Text;
sl.Values[Edit4.Name] := Edit4.Text;
sl.SaveToFile(SaveDialog1.FileName)
finally
sl.Free;
end;
end;
end;
Esiste qualche classe in merito?
Direi di no.
Memorizzare dei dati e fare un report sono due cose differenti; se vuoi fare tutto in un colpo solo dovresti memorizzare i dati in formato xml e poi prevedere un report che li sappia leggere ma credo che sia una strada un po' difficile da praticare...
Per togliere la 'E' puoi fare così prima di salvare:
sl.Values[copy(Edit1.Name, 2, length(Edit1.Name)-1)] := Edit1.Text;
Per l'uguale puoi provare a fare:
sl.NameValueSeparator := #9;
appena dopo la creazione di sl, sotto la try
Incrociando le dita qualcosa viene fuori ;)
Ciao,
La E ho deciso di togliera dal nome nell'ispettore oggetti :)
Ma non posso usare un writeln() per aggiungere quello che voglio prima di salvare?
esempio salvo: Sig=Paolino Pippo
data=30/01/13
Poi con un writeln('-----Topolino----') aggiungo per esempio un
titolo: -----Topolino----
Sig=Paolino Pippo
data=30/01/13
Invece se poi voglio caricare nelle caselle TEdit quello che ho salvato dovrei fare così?
procedure TForm1.BCercaClick(Sender: TObject);
var
sl: TStringList;
begin
OpenDialog1.DefaultExt := 'txt';
OpenDialog1.Filter := '*.txt';
if OpenDialog1.Execute then
begin
sl:= TStringList.LoadFromFile(Devo inserire il percorso?);
try
sl.Values[Sig.Name] := Sig.Text;
sl.Values[data.Name] := data.Text;
sl.LoadFromFile(OpenDialog1.FileName);
finally
sl.Free;
end;
end;
end;
Grazie Ciao
ps. stavo leggendo nel forum che si può caricare una cartella per creare i report :) sono riuscito a caricare la cartella con la spiegazione di xinyiman, sarebbe interessante in futuro trovare un bel tutorial a riguardo sui LazRepot.
Vi saluto
unit1.pas(156,57) Error: Only class class methods, class properties and class variables can be accessed in class methods
unit1.pas(156,57) Error: Only class methods, class properties and class variables can be referred with class references
unit1.pas(263) Fatal: There were 2 errors compiling module, stopping
sl := TStringList.LoadFromFile(OpenDialog1.FileName);
Ok così compila, ma non riesco a leggere nelle TEdit quello che ho salvato, mi genera una eccezione di classe 'External:SIGSEGV'
begin
s := OpenDialog1.FileName;
sl.LoadFromFile(s);
try
sl.Values[ESig.Name] := ESig.Text;
sl.Values[Edata.Name] := EData.Text;
finally
Ok così compila, ma non riesco a leggere nelle TEdit quello che ho salvato, mi genera una eccezione di classe 'External:SIGSEGV'
begin
s := OpenDialog1.FileName;
sl.LoadFromFile(s);
try
sl.Values[ESig.Name] := ESig.Text;
sl.Values[Edata.Name] := EData.Text;
finally
begin
if not OpenDialog1.Execute then
exit;
sl := TStringList.Create;
try
s := OpenDialog1.FileName;
sl.LoadFromFile(s);
ESig.Text := sl.Values[ESig.Name];
EData.Text := sl.Values[Edata.Name];
finally
sl.Free;
end;
end;