Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - XXX+OpenDialog1.FileName | wie?


UserOhneName - Fr 06.02.04 17:32
Titel: XXX+OpenDialog1.FileName | wie?
falls es aus der Überschrift nicht eindeutig hervorgeht:
Ich möchte das meine Datei, die ich in meinem kleinen Prog lade, beim abspeichern den selben Namen wie die geöffnete Datei hat, nur dass davor noch einen Zusatzwort steht.

Das die Datei beim Abspeichern die selben Namen hat, wie die Datei auch heißt, habe ich mit dieser Anweisung realisiert:


Delphi-Quelltext
1:
SaveDialog1.Filename :=  OpenDialog1.FileName;                    


Wenn ich nun die Datei test.txt öffne (mein Programm sortiert eine TStringList alphabetisch) und wieder speicher möchte, zeigt der SaveDialog auch test.txt automatisch an. Soweit so gut.
Ich möchte nur das er beim abspeichern noch ein Wort davor schreibt.
Beispielsweise sortiert_text.txt

Hat jmd dazu ne brauchbare Lösung?
Die Delphi Hilfe und die Suchfunktion haben mich leider nicht weitergebracht.
Ciao
U.o.N.


Delete - Fr 06.02.04 17:38

Strings kannst du mit dem Operator "+" zusammensetzten.


UserOhneName - Fr 06.02.04 17:43

ja das weiß ich, nur wenn ich das in diesem fall mache, also:

Delphi-Quelltext
1:
SaveDialog1.Filename := 'sortiert' + OpenDialog1.FileName;                    


öffnet sich der savedialog 1 nicht mehr.


Delete - Fr 06.02.04 17:59

Hä? Wie rufst du ihn denn auf? Alos ich mache das immer so:

Delphi-Quelltext
1:
if OpenDialog1.Execute then                    


Aber wenn du sie einmal geöffnet hast, dann kennst du doch den Dateinamen. Merk ihn dir und pack beim Speichern einfach deinen String davor.



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var
  Filename: String;
  sl: TStringList;
begin
  if OpenDialog1.Execute then
  begin
    sl := TStringList.Create;
    try
      Filename := OpenDialog1.Filename;
      sl.LoadFromFile(Filename);
      // sortieren
      SaveDialog1.Filename := Filename;
      if SaveDialog1.Execute then
      begin
        sl.SaveToFile('Sortiert_'+SaveDialog1.Filename);
      end;
    finally
        FreeAndNil(sl);
    end;
  end;

So ungefähr, gerade mal schnell hier reingehackt. ;)


cbs - Fr 06.02.04 19:50

hi

das geht so einfach nicht

FileName enthält in dem fall den ganzen pfad + dateinamen

mit FileName:= 'sortiert_' + FileName;
lautet FileName dann beispielsweise


Delphi-Quelltext
1:
'sortiert_C:\irgendeinedatei'                    


du musst erst mit extractfilepath und extractfilename den pfad und den dateinamen rausfiltern und entsprechend mit dem 'sortiert' dazwischen wieder zusammensezten


Delete - Fr 06.02.04 22:05

Mist. Das hab eich vergessen. :?


Delete - Mo 09.02.04 13:30

dann nimm es doch einfach so:


Delphi-Quelltext
1:
  sl.savetofile(ExtractFilePath(SaveDialog1.Filename) + 'sortiert'+ ExtractFileName(SaveDialog1.Filename));                    


ist zwar ned soooo schoen, aber es erfuellt seinen Zweck ;)