Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SaveDialog Dateinamen (https://www.delphipraxis.net/135765-savedialog-dateinamen.html)

Ouou 17. Jun 2009 14:09


SaveDialog Dateinamen
 
Mahlzeit ihr Delphianer :mrgreen: ,

Ich hätte da ein kleines Problem, und zwar programmiere ich gerade einen SaveDialog, der als Dateinamen den Eintrag eines Edit-Feldes besitzen soll.

Bis dahin klappt alles soweit super...

Delphi-Quellcode:
var
    saveDialog: TSaveDialog;
begin
      saveDialog := TSaveDialog.Create(self);
      saveDialog.Filter := 'Textdatei*.txt';    
      saveDialog.DefaultExt := 'txt';              
      saveDialog.Options := [ofOverwritePrompt];
               if saveDialog.Execute then
   begin
      Systemauswertung.Lines.SaveToFile(saveDialog.Filename);
   end;
end;
Nur komme ich nicht drauf wie ich den Dateinamen von dem Edit beziehen kann...

Hat jemand einen Vorschlag?

Mfg Ouou

nahpets 17. Jun 2009 14:16

Re: SaveDialog Dateinamen
 
Hallo,
Delphi-Quellcode:
var
  saveDialog: TSaveDialog;
begin
  saveDialog := TSaveDialog.Create(self);
  saveDialog.Filename := EditIrgendwie.text; // <-- so?
  saveDialog.Filter := 'Textdatei*.txt';    
  saveDialog.DefaultExt := 'txt';              
  saveDialog.Options := [ofOverwritePrompt];
  if saveDialog.Execute then
  begin
    Systemauswertung.Lines.SaveToFile(saveDialog.Filename);
  end;
end;

himitsu 17. Jun 2009 14:16

Re: SaveDialog Dateinamen
 
du kannst z.B. saveDialog.Filename auch etwas zuseiten ... also natürlich vor dem Execute :zwinker:

Jens Hartmann 17. Jun 2009 14:20

Re: SaveDialog Dateinamen
 
Hallo,

Probier es mal so...

Delphi-Quellcode:

SaveDialog1.FileName := Edit1.Text;

[EDIT] Jetzt kann ich mal schnell antworten ohne selber zu Probieren, und trotzdem 2mal schneller. Trotzdem hier die antwort.[/EDIT]
Gruß Jens

Ouou 17. Jun 2009 14:25

Re: SaveDialog Dateinamen
 
Das Problem ist wenn ich das so mache...

Zitat:

[/delphi]var
saveDialog: TSaveDialog;
begin
saveDialog := TSaveDialog.Create(self);
saveDialog.Filename := EditIrgendwie.text; // <-- so?
saveDialog.Filter := 'Textdatei*.txt';
saveDialog.DefaultExt := 'txt';
saveDialog.Options := [ofOverwritePrompt];
if saveDialog.Execute then
begin
Systemauswertung.Lines.SaveToFile(saveDialog.Filen ame);
end;
end;[delphi]
dann wird der saveDialog gar nicht mehr aufgerufen. Es öffnet sich einfach nicht mehr.

Mfg Ouou

Ouou 17. Jun 2009 14:26

Re: SaveDialog Dateinamen
 
Sry habe den Formatierer vergessen :wall:

himitsu 17. Jun 2009 14:46

Re: SaveDialog Dateinamen
 
Wenn du Dateiname etwas zuweißt, was keinem gültigen Dateinamen entsprechen würde, dann triffst du so auf einen "netten" Bug seitens Windows. :angel2:

nahpets 17. Jun 2009 14:51

Re: SaveDialog Dateinamen
 
Hallo,

dass das bei Dir nicht geht, wundert mich, da ich das eigentlich bei etlichen Programmen so oder sehr ähnlich umgesetzt habe.
Versuche es doch mal mit einem festen Dateinamen für SaveDialog.Filename und schaue, ob das geht. Dann wäre der Fehler wirklich bei der Zuweisung des Dateinamens aus dem Edit zu suchen. Ist sichergestellt, dass im Edit ein korrekter Dateiname steht?

Ouou 17. Jun 2009 15:06

Re: SaveDialog Dateinamen
 
Also wenn ich einen festen Dateinamen saveDialog.Filename zuweiße dann klappt es.
Aus dem Edit wird die Mainbord Seriennummer rausgelesen... aber dürfte doch normal kein Problem sein oder?

Jens Hartmann 17. Jun 2009 15:11

Re: SaveDialog Dateinamen
 
Hallo,

Sind dort Sonderzeichen drin vorhanden. Dann kann das Probleme geben. Ungültiger Dateiname.

Gruß Jens

Ouou 17. Jun 2009 15:17

Re: SaveDialog Dateinamen
 
Jap da sind zwei enthalten die stehen hinter der Seriennummer.
Das sind so Vierecke... Ist mir noch gar nicht aufgefallen :gruebel: . Wie kommen die denn da hin?

Jens Hartmann 17. Jun 2009 15:25

Re: SaveDialog Dateinamen
 
Schau dir mal die Funktionen

StringReplaced und Trim String an. Die sollten dir weiterhelfen.

Delphi-Quellcode:
    //Den Dateipfad säubern (Achtung: Doppelpunkt und Backslash sind hier sehr wohl gültig!)
    sFilePath := StringReplace(sFilePath, '/', '', [rfReplaceAll, rfIgnoreCase]);
    sFilePath := StringReplace(sFilePath, '*', '', [rfReplaceAll, rfIgnoreCase]);
    sFilePath := StringReplace(sFilePath, '?', '', [rfReplaceAll, rfIgnoreCase]);
    sFilePath := StringReplace(sFilePath, '"', '', [rfReplaceAll, rfIgnoreCase]);
    sFilePath := StringReplace(sFilePath, '<', '', [rfReplaceAll, rfIgnoreCase]);
    sFilePath := StringReplace(sFilePath, '>', '', [rfReplaceAll, rfIgnoreCase]);
    sFilePath := StringReplace(sFilePath, '|', '', [rfReplaceAll, rfIgnoreCase]);
So ähnlich wird das gemacht. Ich weiß nur nicht mit dem Viereck?

Gruß Jens

DeddyH 17. Jun 2009 15:29

Re: SaveDialog Dateinamen
 
Für die "Vierecke" sollte Trim() im Normalfall reichen.

Ouou 17. Jun 2009 15:40

Re: SaveDialog Dateinamen
 
Ok werde ich mir mal anschauen.

Vielen Danke soweit...

Ouou 18. Jun 2009 10:31

Re: SaveDialog Dateinamen
 
Mahlzeit...

hatte gestern nicht mehr die Zeit um Trim() auszuprobieren... wollte nur sagen, dass es jetzt optimal klappt.

Danke für die Hilfe Leutz...

Bis demnächst

mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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