![]() |
Inhalt der pref.js Dateien ändern
Hallo!
Ich würde gerne einen bestimmten Eintrag in einer pref.js (bei Netscape) Datei, die ich mit einem Texteditor öffne, mit Delphi ändern! Beispiel: Autocomplete von true auf false ändern! Gibt es eine Möglichkeit oder einen Code, mit dem ich diese Einträge ändern kann? Danke schon mal im voraus! Gruss Eleonora |
Hallo. Da ich keine Ahnung habe, wie so eine Datei aufgebaut ist, würde ich sagen, du lädst die date, suchst mit pos() die Position des Eintrags
Autocomplete gehst von dieser Position 12 Zeichen (Die länge des Wortes autocomplete)weiter und ersetzt dann false durch true. So würd ich das machen aber: 1) Da ich es noch nie versucht habe, kann ich nicht garantieren, dass es funzt. 2) Hat bestimmt irgendwer ne schönere Lösung anzubieten. Man liest sich. Stanlay :spin: |
Hallo eleonora,
da es sich bei .js (JavaScript) Dateien um Textdateien handelt, kannst du sie wie andere Textdateien bearbeiten. Du kannst sie z.B. in ein Memo laden, dort bearbeiten (zeilenweise durchlaufen und z.B. mit Pos den zu änderenden String suchen und ersetzen) und wieder abspeichern. |
@MrSpock
Kannst Du mir mal einen kleinen Tip zu Pos geben, denn ich habe damit noch gar nicht gearbeitet und das was ich im Formum finde bringt mich irgendwie nur noch mehr durcheinander! Aber ich werde es solange trotzdem weiter versuchen! Danke! eleonora |
Hallo eleonora,
wenn du die Textdatei in ein Memo geladen hast:
Delphi-Quellcode:
var
posi : Integer; ... for i:= 0 to memo.lines.count-1 do begin { suchStr enthalte den zu suchenden String } posi := Pos(suchStr, memo.lines.Strings[i]); { posi zeigt nach dieser Anweisung auf das erste Vorkommen des suchStr in der durchsuchten Zeile, oder hat den Wert 0 } if posi > 0 then begin { in memo.lines.Strings[i] steht ab der Position posi der zu suchende String } { Wert des Strings ändern } end end; |
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hatte damals das selbe Problem. Die Version 0.9x des Mozilla besaß zwar schon den Popup-Blocker, hatte in den Einstellungen aber noch keine Option dafür. Ergebnis war mozillum: ein Mini-Tool, das den notwendigen Eintrag selbst in die "prefs.js" geschrieben hat.
Wenn´s dich interessiert, kannst du den Programmcode als Basis nutzen, @eleonora. Das Prinzip ist in deinem Fall ähnlich. Hab´s mal rausgesucht und angehangen. |
Danke Euch beiden für Eure schnelle Hilfe! :)
Leider hab ich grad keine Zeit mir das alles genau anzuschauen! Drumm werdet ihr wahrscheinlich erst morgen eine Antwort von mir bekommen! Sorry! :( Gruss Eleonora :coder: |
Hallo!
Ich habe mich jetzt erst mal mit dem Code von MrSpock auseinander gesetzt! Er funktioniert bei mir allerdings nicht! Vielleicht kann mir ja einer sagen warum? Hier ist mal mein Code den ich eingefügt habe!
Code:
Wenn ich das Programm starte, dann lädt er mir die Datei zwar ins Memofeld. Nur hab ich das Problem, dass er mir die angegebene Position nicht ausgibt und anschliessend abstürzt.
procedure Teraser_memo.Button1Click(Sender: TObject);
var posi : integer; i : integer; s : string; begin for i := 0 to Memo.Lines.count-1 do begin if OpenDailog.Execute then begin Memo.Lines.LoadFromFile(OpenDialog.FileName); posi := Pos('pref("browser.urlbar.autocomplete.enabled"), false','Memo.lines.strings[i]'); ShowMessage(Memo.lines.strings[posi]); end; end; @MatthiasSimmack: Für Deinen Code hatte ich noch keine Zeit um ihn mir genau anzuschauen. Allerdings bin ich in Mozilla auch noch nach was anderem auf der Suche und wollte Dich dazu mal was fragen! Darf ich Dir ne mail schicken, oder soll ich es hier rein posten? Allerdings hat es "nichts" mit Delphi zu tun!!! Gruss Eleonora |
Hallo eleonora,
du hast ja auch das Öffnen der Datei mit in die Schleife gepackt. Count ist dann natürlich auch noch nicht korrekt. Es muss so aussehen:
Delphi-Quellcode:
if OpenDailog.Execute then
begin Memo.Lines.LoadFromFile(OpenDialog.FileName); for i := 0 to Memo.Lines.count-1 do begin posi := Pos('pref("browser.urlbar.autocomplete.enabled"), false','Memo.lines.strings[i]'); { show Message musss hier mit Index i und nicht mit posi aufgerufen werden"! } ShowMessage(Memo.lines.strings[i]); end; end; |
Hallo!
:oops: Die Schleife habe ich ausversehen falsch rüber kopiert. :oops: Ich habe aber auch schon das posi durch das i ersetzt! Wenn ich das dann mache, dann geht er mir das ganze Memo Zeile für Zeile durch! Und wenn ich das richtig verstanden habe, dann soll er mir ja gleich diesen Eintrag raussuchen!? Eleonora |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz