AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Es wird nur in eine datei geschrieben
Thema durchsuchen
Ansicht
Themen-Optionen

Es wird nur in eine datei geschrieben

Ein Thema von Lindworm · begonnen am 16. Sep 2005 · letzter Beitrag vom 17. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
Lindworm
(Gast)

n/a Beiträge
 
#1

Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 19:49
Hi, ich habe noch nicht all zuviel Ahnung von Delphi, deshalb habe ich hier ein kleines Problemchen und hoffe, dass mir
jemand dabei helfen kann es zu lösen. Wenn ich nen Logikfehler drinnehab, dann bitte nicht nur ne fertige Lösung sagen oder so, sondern nach Mglk. auch erläutern, damitich den Fehler ned nochmal mache

Das ist mein Quelltext:

Delphi-Quellcode:
var
  Form1: TForm1;
  nb1, nb2, nb3, r1, r2, r3, ip1, ip2, ip3 :string;
  snb, snbneu, srconneu, srcon :TStringlist;
implementation

{$R *.dfm}

procedure TForm1.btsavedataClick(Sender: TObject);
begin
 srcon := TStringlist.Create;
 srconneu := TStringlist.Create;
 snb := TStringlist.Create;
 snbneu := TStringlist.Create;


srcon.LoadFromFile('varrcon.cfg');
snb.LoadFromFile('varcommandmenu.txt');
r1:=edrcon1.Text;
r2:=edrcon2.Text;
r3:=edrcon3.Text;

ip1:=edip1.Text;
ip2:=edip2.Text;
ip3:=edip3.Text;

nb1:=ednb1.Text;
nb2:=ednb2.Text;
nb3:=ednb3.Text;

srconneu.Text := StringReplace(srcon.Text, 'xrcon_pw1', r1, [rfIgnoreCase]);
srconneu.Text := StringReplace(srconneu.Text, 'xrcon_pw2', r2, [rfIgnoreCase]);
srconneu.Text := StringReplace(srconneu.Text, 'xrcon_pw3', r3, [rfIgnoreCase]);

srconneu.Text := StringReplace(srconneu.Text, 'xip1', ip1, [rfIgnoreCase]);
srconneu.Text := StringReplace(srconneu.Text, 'xip2', ip2, [rfIgnoreCase]);
srconneu.Text := StringReplace(srconneu.Text, 'xip3', ip3, [rfIgnoreCase]);

snbneu.Text := StringReplace(snb.Text, 'xservname1', nb1, [rfReplaceAll, rfIgnoreCase]);
snbneu.Text := StringReplace(snbneu.Text, 'xservname2', nb2, [rfReplaceAll, rfIgnoreCase]);
snbneu.Text := StringReplace(snbneu.Text, 'xservname3', nb3, [rfReplaceAll, rfIgnoreCase]);

srconneu.SaveToFile('rcon.cfg');
snbneu.SaveToFile('commandmenu.txt');

 srcon.Free;
 srconneu.Free;
 snb.Free;
 snbneu.Free;
end;

end.
Im Prinzip funktioniert das ganze ja halbwegs, bis auf den Punkt, dass nur die Commandmenu.txt erstellt wird, die rcon.cfg aber ned. Anfangs war der gesamte Teil, der für die commandmenu.txt zuständig ist nicht drin und das Script hat auhc klasse geklappt, hoffe Ihr könnt mir helfen
Grüße, Bene
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 19:52
Es liegt warscheinlich nicht daran, aber ich würde immer einen Pfad angeben. (ev. mit ExtractPath(ParamStr(0)) (glaub so heißt das))
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Lindworm
(Gast)

n/a Beiträge
 
#3

Re: Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 19:56
hmm, das Script soll aber eigentlcih beliebig verschiebbar sein, da es ein Teil einer CS-Scriptsammlung ist :-/
deshalb wäre es eigentlich unpraktisch, wenn man immer das Verzeichnis abfragen müsste,
aber schonmal danke für deine Antwort
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 20:02
Hai Lindworm,

was faux sagen wollte ist folgendes:
Wenn Du mit
Delphi-Quellcode:
begin
.
  stringlist.SaveToFile ('blubb.txt');
.
end;
die Datei speicherst wird diese in das aktuelle Verzeichniss von Windows geschrieben. Dies ist nicht zwingend das Verzeichniss in dem dein Programm liegt.

Mit der Konstruktion
Delphi-Quellcode:
begin
.
  stringlist.SaveToFile(ExtractFilePath(ParamStr(0)) + 'blubb.txt');
.
end;
Wird die Datei in dem Verzeichniss gespeichert in dem dein Programm liegt.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Lindworm
(Gast)

n/a Beiträge
 
#5

Re: Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 20:03
achso, sorry wegen dem Missverständnis, werde das gleich mal testen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 20:04
Hi Bene,

herzlich willkommen in der Delphi-PRAXiS.

Mir tun zwar die Augen weh, wenn ich deinen Code anseh, aber nach zweimal Lesen kann ich keinen offensichtlichen Fehler entdecken. Muss ja nichts heißen. Baue doch einfach mal eine Kontrolle ein:

Delphi-Quellcode:
var
  dir: string;
...
GetDir(0, dir);
ShowMessage(dir); // wohin schreiben wir denn?
ShowMessage(srconneu.Text); // was wollen wir denn schreiben?
srconneu.SaveToFile('rcon.cfg');
...
Grüße vom marabu
  Mit Zitat antworten Zitat
Lindworm
(Gast)

n/a Beiträge
 
#7

Re: Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 20:14
Hi, also nachdem ich des mit extractfilepath gemacht habe, geht alles

Danke euch dreien und @marabu: wie soll ichs denn anders/besser aufbauen, ich finde das sieht schon recht übersichtlcih aus

danke@faux, werde mich bemühen sowas in nächster Zeit mehr zu automatisieren
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 20:16
Du könntest zB die StringReplace's mit Arrays aufbauen...

Und wenn du die edrcon1, edrcon2 und edrcon3 - Objekte (sind glaubich TextFelder) nicht mit dem Objektinspektor machst, sondern wärend der Laufzeit in ein Array schreibst, kannst du zB aus
Delphi-Quellcode:
r1:=edrcon1.Text;
r2:=edrcon2.Text;
r3:=edrcon3.Text;
das machen:

Delphi-Quellcode:
for i := 1 to 3
r[i]:=edrcan[i].Text;
Oder so ähnlich.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 20:43
Hi Bene,

nur als Denkanstoß:

Delphi-Quellcode:
interface

type
  TForm1 = class(TForm) // solltest du vielleicht auch mal umbenennen
    ...
  private
    dataDir: string;
    procedure ApplyChanges(fileName: string; changes: TStringList);
    procedure FormCreate();
    ...
  end;

var
  Form1: TForm1;

// hier keine eigenen Variablen deklarieren
// die werden besser lokal deklariert
// oder als Objekt-Variablen von TForm1

implementation

{$R *.dfm}

procedure TForm1.ApplyChanges(fileName: string; changes: TStringList);
var
  i: integer;
  sl: TStringList;
  key, value, s: string;
begin
  sl := TStringList.Create;
  sl.LoadFromFile(dataDir + 'var' + fileName);
  s := sl.Text;
  for i := 0 to Pred(changes.Count) do begin
    key := changes.Names[i];
    value := changes.Values[key];
    s := StringReplace(s, key, value, [rfIgnoreCase]);
  end;
  sl.Text := s;
  sl.SaveToFile(dataDir + fileName);
  sl.Free;
end;

procedure TForm1.FormCreate(...);
begin
  dataDir := ExtractFilePath(ParamStr(0));
end;

procedure TForm1.btsavedataClick(Sender: TObject);
var
  changes: TStringList;
begin
  changes := TStringlist.Create;
  changes.Values['xrcon_pw1'] := edrcon1.Text;
  changes.Values['xrcon_pw2'] := edrcon2.Text;
  changes.Values['xrcon_pw3'] := edrcon3.Text;
  changes.Values['xip1'] := edip1.Text;
  changes.Values['xip2'] := edip2.Text;
  changes.Values['xip3'] := edip3.Text;
  ApplyChanges('rcon.cfg', changes);

  changes.Clear;
  changes.Values['xservname1'] := ednb1.Text;
  changes.Values['xservname2'] := ednb2.Text;
  changes.Values['xservname3'] := ednb3.Text;
  ApplyChanges('commandmenu.txt', changes);

  changes.Free;
end;

end.
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Lindworm
(Gast)

n/a Beiträge
 
#10

Re: Es wird nur in eine datei geschrieben

  Alt 16. Sep 2005, 20:52
Hi marabu,
du hast dir ja richtig Arbeit gemcht, danke
gucke mir gerade deine Umsetzungen an, damit ichs in nächtser zeit auch so aufbauen kann
Grüsse, Bene
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz