Chciałbym skorzystać z SaveDialog = Problem to zapis zawartości Edit (Kiladziesiąt pól) do jeszcze nieistniejącego pliku.Z góry dzięki za pomoc.
if Savedialog.Execute then Memo.Lines.SaveToFile(SaveDialog.FileName);
Fojcik
var
F:TextFile;
begin
AssignFile(F, 'c:\mojplik.txt');
Rewrite(F); * lub Append(F); jesli dopisywanie na koncu istniejacego pliku
Writeln(F,Edit1.Text);
Writeln(F,Edit2.Text);
Writeln(F,Edit3.Text);
CloseFile(F);
end;
albo, jesli Edity sa ponumerowane kolejno:
var
F:TextFile;
i: integer;
Editek : TEdit;
begin
AssignFile(F, 'c:\mojplik.txt');
Rewrite(F); * lub Append(F); jesli dopisywanie na koncu istniejacego pliku
for i:=1 to 3 do
begin
Editek:=FindComponent('Edit'+IntTostr(i)) as TEdit;
Writeln(F,Editek.Text);
end;
CloseFile(F);
end;
--Pawel
Delphi6
Skupilem sie na problemie wielu Editow i zapomnialem ze ma byc SaveDialog. Oczywiscie powinno byc:
If SaveDialog.Execute then...
(...)
AssignFile(F, SaveDialog.FileName);
itd..
--Pawel
Delphi6
Dzięki, dzięki jeszcze raz dzięki!
Faktycznie nie zauwazylem ze to edity :)
Moja propozycja :
procedure TFormX.SaveToFile(filename : AnsiString);
var licznik : Word;
ts : TStrings;
begin
try
ts := TStringList.Create;
for licznik := 0 to ComponentCount-1 do
if Components[licznik].ClassName='TEdit' then ts.Add((Components[licznik] as TEdit).Text);
{przeszuka wszystkie kontrolki i jesli to bedzie Tedit to jego zawartosc doda do ts}
ts.saveToFile(filename);
finally
ts.Free;
end;
end;
a w programie
if SaveDialog.Execute then SaveTofile(SaveDialog.fileName);
Pozdrawiam
Fojcik
P.S. Pisane bylo "z pamieci" bez proby kompilacji -wiec moze gdzies trzeba dodac srednik :)
Pozwale sobie mniemac ze moje rozwiazanie jest lepsze. W tym mianowicie, ze rozwiazanie Fojcika zrzuci do pliku wszystkie Edity na formie jak leci (co nie musi byc porzadane), zas moje tylko te, ktorych nazwy maja postac Editn (gdzie n=1 do 3). Przez inteligentne nazywanie Editow mozna (przy moim rozwiazaniu) zrzucic do pliku tylko te Edity, ktore sie tam powinny znalezc. No i chyba u mnie latwiej panowac nad kolejnoscia w jakiej poszczegolne Edity znajda sie w pliku.
--Pawel
Delphi6
Jaka jest buzka na wyrazenie wstydu?? Ja naprawde wiem, ze pisze sie pożądane!!!--Pawel
Delphi6
Ale ja nie mowilem o tym czyje rozwiazanie jest lepsze. Zglosilem tylko propozycje ...
:-)
Ale jesli juz poruszasz ten temat to powiem tylko tyle ze nie zgodzilbym sie - bowiem u mnie jest kontrola czy kontrolka jest fakycznie editem - u ciebie w momencie gdy
nazwalbym sobie Labela jako Edit4 program by sie wysypal - to tylko przyklad. Nie wspomne juz o rozwiazaniu problemu zapisu do pliku. W moim przypadku operujac na TStrings mozna z elementami przed zapisem do pliku zrobic praktycznie wszystko
- np: posortowac.
Ponadto wyszukiwanie X kontrolek jest procesem dluszym niz jednorazowe przejscie przez wszystkie kontrolki. Jesli chodzi o zawezenie do nazwy wystarczy dopisac linie
if (Components[licznik] as TEdit).Name=.... i juz mam kontrole nad nazewnictwem - przy czym zachowam jednorazowe przejscie przez liste kontrolek i bede mial pewnosc ze kotrolka jest Editem.
Tak wiec - sam widzisz ze twoj kod moze byc jedynie uzupelniniem do mojego ...
Razem bysmy stworzyli swietny kod ;)--Pawel
Delphi6