Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Zapis do souboru v Delphi

Zdravím.
Mam soubor.
Tady je kousek

user_pref("intl.charsetmenu.browser.cache", "ISO-8859-2, windows-1251, ISO-8859-1, windows-1250, UTF-8");
user_pref("network.cookie.prefsMigrated", true);
user_pref("network.http.max-persistent-connections-per-server", 4);
user_pref("network.proxy.backup.ftp", "moje proxy");
user_pref("network.proxy.backup.ftp_port", 3128);
user_pref("network.proxy.backup.gopher", "");
user_pref("network.proxy.backup.gopher_port", 0);
user_pref("network.proxy.backup.socks", "moje proxy");
user_pref("network.proxy.backup.socks_port", 3128);
user_pref("network.proxy.backup.ssl", "moje proxy");
user_pref("network.proxy.backup.ssl_port", 3128);
user_pref("network.proxy.ftp", "moje proxy");
user_pref("network.proxy.ftp_port", 3128);
user_pref("network.proxy.gopher", "moje proxy");
user_pref("network.proxy.gopher_port", 3128);
user_pref("network.proxy.http", "moje proxy");
user_pref("network.proxy.http_port", 3128);
user_pref("network.proxy.share_proxy_settings", true);
user_pref("network.proxy.socks", "moje proxy");
user_pref("network.proxy.socks_port", 3128);
user_pref("network.proxy.ssl", "moje proxy");
user_pref("network.proxy.ssl_port", 3128);
user_pref("network.proxy.type", 1);
user_pref("nglayout.initialpaint.delay", 600);

Kdysi davno jsem si udělal batak přes ktery jsem nastaveni měnil

echo user_pref("network.proxy.ftp", "moje proxy");>>"%ffile%\prefs.js"
echo user_pref("network.proxy.ftp_port", 3128);>>"%ffile%\prefs.js"

Jak však na to v delphi, poradite

Předmět Autor Datum
na co ti je delphi ked to ide urobit batakom? V dephi sa to robi stejne jak v jakomkolvek inom progr…
MM.. 08.05.2012 07:35
MM..
na co ti je delphi ked to ide urobit batakom? No pokud chci to ted použivat v Delphi tak mi připada…
kubicek 08.05.2012 09:29
kubicek
Proč bys ho musel přepsat?
Wikan 08.05.2012 09:33
Wikan
ja neviem co chces robit ale ten bat len pridava na konic suboru, tak preto som sa pytal naco ti je…
MM.. 08.05.2012 09:34
MM..
http://www.zive.cz/clanky/umime-to-s-delphi-24-dil --prace-se-soubory-podrobneji-1-cast/sc-3-a-10267…
Zdenál 08.05.2012 10:31
Zdenál
Asi by som to riešil možno nejak takto: procedure TForm1.Button1Click(Sender: TObject); var TS: TSt…
pme 08.05.2012 10:02
pme
pme dik moc, to je vončo :-D poslední
kubicek 08.05.2012 18:05
kubicek

na co ti je delphi ked to ide urobit batakom?
V dephi sa to robi stejne jak v jakomkolvek inom programovacom jazyku, zavola sa funkcia na otvorenie suboru s prislusnymi parametrami (u teba tam bude najskor Append flag), funkcia na zapis do suboru, a funkcia na zavretie suboru.
Funkcie zavisia aj trochu od platformy, idealne je volat priamo WinAPI (CreateFile atd, viz MSDN) aby si mal istotu ze co to robi. Alebo si das do google delphi file functions.

na co ti je delphi ked to ide urobit batakom?

No pokud chci to ted použivat v Delphi tak mi připada jako pěkna prasarna volat přes Delphi batak ne.

Otevřit ten soubor,načist po řadci do stringu a porovnat zda je ve stringu třeba user_pref("network.proxy.ftp" je jednoduche.
Jak ale se zapisem.
To bych musel každy načteny řadek uložit do noveho souboru a pak ten puvodni přepsat.
Proto jsem se obratil tady zda neni jednoduchší řešení.

ja neviem co chces robit ale ten bat len pridava na konic suboru, tak preto som sa pytal naco ti je delphi - CO chces teraz robit inac jak v tom bat? Naco ti je vobec delphi?

Funkcie na pracu so subormi funguju tak ze ak chces zapisovat na koniec suboru tak otvoris povodny subor presunies sa (seek) na koniec suboru (alebo otvoris subor s flagom append) a zapisujes len to co sa ma tam pridat na koniec.
Ak chces nieco prepisovat bez posuvania znakov v zvysku suboru tak sa presunies (seek) na poziciu ktoru chces menit a zapisujes.
Ak chces prepisovat tak ze by sa zbytok suboru musel posuvat tak to sa robi tak ze sa subor nacita do pamate a zmeni sa v pamati co chces a nasledne sa subor prepise cely, alebo od miesta ktore treba menit az po koniec suboru apod. Cele to vzdy zavisi od toho jaky velky moze byt subor (kvoli pamati) a od pozadovanych operacii. Je to na programatorovi aby to urobil optimalne vzhladom na dane poziadavky a ne jak pako.

Asi by som to riešil možno nejak takto:

procedure TForm1.Button1Click(Sender: TObject);
var
  TS: TStringList;
  i: Integer;
  s: String
begin
  TS := TStringList.Create;
  TS.LoadFromFile('C:\prefs.js');
  for i  := 0 to TS.Count-1 do
  begin
    s:= TS[i];
    // tu urobíš čo chceš s každým reťazcom "s"
    //
    // prepíšeš ho naspäť
    TS[i] := s;
  end;
  TS.SaveToFile('C:\prefs.js');
  TS.Free;
end;

Netvrdím, že neexistuje lepšie riešenie, ale toto je asi "najbezbolestnejšie"... :-)

Zpět do poradny Odpovědět na původní otázku Nahoru