|
[ smjesko @ 26.06.2004. 18:31 ] @
| imam jedan malo problemcic naime imam neki tekst u listboxu i sada zelim da mi taj tekst kopira u neki dokument npr *.txt i mislim da bi trebao koristiti ovu komandu
listbox1.Items.SaveToFile(); ali sta ide izmedu zagrada? |
[ Bojan Kopanja @ 26.06.2004. 18:41 ] @
U tim zagradama ide npr. F :)... Ma ozbiljno, stvar je krajnje jednostavna:
Code: ...........
var F:textfile;
............
assignfile(F,'nekifajl.txt');
rewrite(F);
listbox1.items.savetofile(F);
closefile(F);
..............
Eto, ovo sam pisao napamet, pa mozda ima neke greske ali to ti je u sustini to
[ smjesko @ 26.06.2004. 19:10 ] @
hmm neradi..... incompatible types string and text, i zaboravio sam dodat da te neke stavke rijeci nebitno.. slaze znaci ne da samo prepisujue nadam se da razumijes
[ smjesko @ 26.06.2004. 19:44 ] @
resio sam problem
listbox1.items.SaveToFile(SaveDialog2.FileName);
ali imam sledeci problem jer mi uvek prepise predhodni deo teksta koji je bio snimljen.
kada god snjimi samo prepise postojeci dio teksta novim i tako da nemam koristi sta mislite imali kakvo lepse resenje???
Pozdrav by smjesko
[ Bojan Kopanja @ 26.06.2004. 20:31 ] @
Joj izvini za onu gresku, to uvek uradim, ali posto sam pisao napamet nije bilo Delphija da me obavesti o tome pa da ispravim  ...
Pa ta funkcija ( SaveToFile ) ce ti uvek prepisivat postojeci fajl... Ovaj put ces upisivanje ipak morati da odradis rucno...
Evo otpriliko koda:
Code: .................
var f:textfile;
s:string;
i:integer;
begin
AssignFile( f,'nekifajl.txt' );
Append( f ); { zbog ovoga ce dopisivati u postojeci fajl, ali sada fajl MORA da postoji, moze se i to srediti, ali bi to malo komplikovalo kod, a tebi sada samo treba sustina :) }
for i := 1 to Listbox1.Count-1 do
begin
s:=ListBox1.Items.Strings[i];
Writeln(f,s);
end;
CloseFile(f);
................
Evo, ovo ce da ti radi 100% ( pisano u Delphiju ovaj put  )!
P.S. Na ovoj adresi imas moj tutorial za rad sa datotekama ( sve operacije nad njima su opisanje ), pa malo pogleda, nece da skodi  ...
[ hwfanatic @ 26.06.2004. 20:58 ] @
Može to i malo elegantnije, ako mene pitaš...
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
AStream: TFileStream;
begin
try
if SaveDialog1.Execute
then begin
AStream := TFileStream.Create(SaveDialog1.FileName, fmShareDenyWrite);
AStream.Seek(0, soFromBeginning);
Memo1.Lines.SaveToStream(AStream);
end
else Exit;
finally
AStream.Free;
end;
end;
Svojstvo Lines objekta Memo1 je tipa TStrings, te tu može doći i onaj tvoj ListBox, ako treba.
[ Bojan Kopanja @ 26.06.2004. 21:07 ] @
Pa dobro, moje predlog je stvarno malo "siroviji", ali je mozda i razumljiviji, osim toga tvoj primer je za Memo, a covek je lepo rekao da je u pitanju ListBox  ...
[ hwfanatic @ 26.06.2004. 21:38 ] @
Ih, kao da je važno - pa obe klase koriste TStrings.
Nego, tvoja metoda je sasvim u redu, ali mi se učinilo da ima premalo onog "objektnog", što je, ustvari, cela poenta OP-a... :)
[ smjesko @ 26.06.2004. 21:52 ] @
[Error] main.pas(575): Undeclared identifier: 'Count'
nerazumem ljudi gde gresim?
for i := 1 to Listbox1.Count(ovde daje gresku)-1 do
begin
s:=ListBox1.Items.Strings;
Writeln(f,s);
end;
CloseFile(f);
[ hwfanatic @ 26.06.2004. 22:16 ] @
Alternativno iskoristi Count objekta Items (TStrings); tako bi trebalo da radi. Znači: ListBox1.Items.Count
[ smjesko @ 26.06.2004. 22:21 ] @
RADI mnogo Vam hvala momci samo tako nastavite :)))
AssignFile( f,'c:\log.txt' );
Append( f );
for i := 1 to Listbox1.items.count-1 do
begin
s:=ListBox1.Items.Strings;
Writeln(f,s);
end;
CloseFile(f);
[ smjesko @ 26.06.2004. 22:26 ] @
i jos samo jedna molba da mi kazete dali mogu to sada sve opet importovat u program i ubacit u listbox1
[ hwfanatic @ 26.06.2004. 22:34 ] @
Vrlo slično... Na mestu Append() stavi Reset(), a umesto ove dve linije:
Code:
s:=ListBox1.Items.Strings;
Writeln(f,s);
A, ti stavi:
Code:
ReadLn(f,s);
ListBox1.Items.Add(s);
Sve se to, naravno, može odraditi mnogo elegantnije koristeći SaveToStream i LoadFromStream metoda TStrings klase, ili neke nasleđene...
[ smjesko @ 26.06.2004. 22:49 ] @
nece, [Error] dReport.pas(421): Incompatible types: 'String' and 'Word'
[ Bojan Kopanja @ 27.06.2004. 01:52 ] @
hwfanatic >> Nego, tvoja metoda je sasvim u redu, ali mi se učinilo da ima premalo onog "objektnog", što je, ustvari, cela poenta OP-a...
Pa sto jest, jest, ali to ti je ta stara skola
A za ovo ucitavanje u ListBox1: To ti je isto kao upisivanje u fajl, samo malo drugacije ( ih, al' sam srocio recenicu  ):
Code: var f:textfile;
s:string;
i:integer;
begin
AssignFile( f,'log.txt' );
Reset( f );
repeat
readln(f,s);
Listbox1.Items.Add(s);
until eof(f);
CloseFile(f);
end;
a sve to mozes i malo jednostavnije da odradis ovako:
Code: ListBox1.Items.LoadFromFile('log.txt');
Uzivaj!
[ smjesko @ 27.06.2004. 08:34 ] @
Hvala vam momci radi :))
[ Bojan Kopanja @ 27.06.2004. 10:59 ] @
Nema na cemu ;)!
[ bancika @ 28.06.2004. 00:42 ] @
Code:
ljudi, sto komplikujete stvari
za ucitavanje je
ListBox.Items.LoadFormFile('c:\autoexec.bat')
a za snimanje
ListBox.Items.SaveToFile('c:\autoexec.bat');
ako hocete da user bira fajl bacite po jedan TSaveDialog i TOpenDialog (nalaze sa na Dialogs kartici) i promenite kod u:
if SaveDialog1.Execute then
ListBox.Items.LoadFormFile(SaveDialog1.FileName);
ili ja ne razumem sta ti hoces uopste :)
pozdravi
[ Bojan Kopanja @ 28.06.2004. 01:00 ] @
Pa za ucitavanje sam mu i rakao za OpenFromFile, ali za snimanje mu je
trebao append, tako da mu SaveToFile ne odgovara...
[ bancika @ 28.06.2004. 02:01 ] @
ok onda, video sam da sve ubacujete red po red, sto je glupavo malo. kod append moze tako, ali je brze preko stream-a, ListBox -> Stream -> File
[ Bojan Kopanja @ 28.06.2004. 22:25 ] @
Ma dobro, rece covek da mu ono odradjuje posao, tako da sada vise nije bitno.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|