Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie kann ich eine Datei erstellen ohne Savedialog? (https://www.delphipraxis.net/21138-wie-kann-ich-eine-datei-erstellen-ohne-savedialog.html)

NikoMitDaMacht 28. Apr 2004 13:08


Wie kann ich eine Datei erstellen ohne Savedialog?
 
Hallo ich habe ein Problem.(..sonst würd ich hier ja nichts schreiben)

Also... wie kann ich einfach und problemlos eine Datei erstellen ohne dafür einen Savedialog
aufzurufen? :wall:

S2B 28. Apr 2004 13:09

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Was für eine Datei willst du denn erstellen?

fiasko 28. Apr 2004 13:10

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
kannst du ein bißchen genauer erklären was du genau machen willst? Ein TSaveDialog legt doch keine Datei an?! :gruebel:

DP-Maintenance 28. Apr 2004 13:15

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Tutorials und Kurse" nach "Sonstige Fragen zu Delphi" verschoben.
Hat ja nichts mit einem Tutorial zu tun.

Trotzdem: "Herzlich Willkommen in der Delphi-PRAXIS"

NikoMitDaMacht 28. Apr 2004 13:16

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Tja... eine text datei mit der endung *.dat (also eine *.dat-Datei)

fiasko 28. Apr 2004 13:19

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Und was soll drinne stehe, also woher kommen die Sachen die da rein sollen? Zum Anfang vielleicht sowas der Art:
Delphi-Quellcode:
var
  f: Text;

begin
  AssignFile(f,'c:\text.dat');
  Rewrite(f);
  writeln(f,'Blah');
  CloseFile(f);
end.

S2B 28. Apr 2004 13:19

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Woher soll der Text denn kommen? Aus einem Memo wäre es leicht:
Delphi-Quellcode:
Memo1.Lines.SaveToFile('Filename');

NikoMitDaMacht 28. Apr 2004 13:35

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Also ich habe so einen ich nenns mal "Trecord" so stehst eim Type :

Delphi-Quellcode:
type
  tDaten = record
           WinFolder: string[60];
           LastIp: string[60];
           soundpfad: string[60];
           sound: string[1];
           soundAn: string[1]
end;

...
  public
    { Public-Deklarationen }
    dateiname:string;
    datei: file of tDaten;
    daten: tDaten;
  end;

...
so ... und dann un das zu nutzen hab ich's so gemacht
Delphi-Quellcode:
procedure TFormConfig.ButtonNeueDateiClick(Sender: TObject);
begin
    if savedialog1.execute then
       begin
         if dateiname <> '' then closefile(datei);
         dateiname:=savedialogdatei.filename;
         assignfile(datei,dateiname);
         rewrite(datei);

         timer2.Enabled:=true ;

         buttonaenderungenspeichern.enabled:=true;

       end
end;


procedure TFormConfig.Timer2Timer(Sender: TObject);
begin
timer2.Enabled:=false;
  try
     reset(datei);
     seek(datei, filesize(datei));
     edit1.text:='';
     edit2.text:='';
     edit3.text:='';
     edit4.text:='';
    daten.winfolder:=edit1.text;
    daten.Lastip:=edit2.text;
    daten.soundpfad:=edit3.Text;
    daten.soundan:=edit4.Text;
    daten.sound:=editort.Text;
     write(datei,daten);
     edit1.setfocus
  except
     showmessage('Fehler: Zuerst Datei öffnen!')
  end
end;
// bitte nicht über die namen der strings wundern

so und jetzt will ich eigentlich nur dass das programm die datei eben automatisch erstellt :duck:

NikoMitDaMacht 28. Apr 2004 13:45

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Hey ich glau jetzt hab ich's :

TSaveDialog erstellt wirklich keine datei sondern das "AssignFile(f,'c:\text.dat');" oder?
also kann ich's doch so machen :

Delphi-Quellcode:
procedure TFormConfig.ButtonNeueDateiClick(Sender: TObject);
begin
         if dateiname <> '' then closefile(datei);
         dateiname:='datei.dat';
         assignfile(datei,dateiname);
         rewrite(datei);

         timer2.Enabled:=true ;

         buttonaenderungenspeichern.enabled:=true;

       end
end;
:dancer2:

Sharky 28. Apr 2004 13:47

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Zitat:

Zitat von NikoMitDaMacht
...TSaveDialog erstellt wirklich keine datei sondern das "AssignFile(f,'c:\text.dat');" oder?...

Jup. TSaveDialog und TOpenDialog erzeugen oder öffnen nichts.
Sie geben dir immer nur einen Pfad inkl. Dateinamen zurück. Was Du daraus machst ist dann deine Sache.

S2B 28. Apr 2004 13:47

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
wo willst du denn die Datei hinspeichern? Ich würde noch ein
Delphi-Quellcode:
ExtractFilePath(application.exename)
davorhängen, wenn sie in das Verzeichnis der exe soll!

NikoMitDaMacht 28. Apr 2004 13:48

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
es hat so geklappt danke!!1 :cheers:

NikoMitDaMacht 28. Apr 2004 13:52

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Kannst du mir das mit dem "ExtractFilePath(application.exename)" erkären?

S2B 28. Apr 2004 13:57

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Das ist der Pfad, wo die exe liegt! Ich glaube, es geht auch so, aber ich würde noch den Pfad mit dranhängen, wenn du die Datei in den Ordner speichern willst, wo die exe liegt!

ExtractFilePath :arrow: Exportiert den Pfad des Ordners aus dem Pfad der exe des Programms. (schlecht erklärt, ich weiß)

Delphi-Quellcode:
dateiname:=ExtractFilePath(application.exename) + 'datei.dat';
Kannste ja noch reinschreiben, wenn de lustig bist! :mrgreen:

Sharky 28. Apr 2004 13:58

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Zitat:

Zitat von NikoMitDaMacht
Kannst du mir das mit dem "ExtractFilePath(application.exename)" erkären?

"ExtractFilePath(application.exename)" gibt dir den Pfad zu dem Verzeichniss zurück aus dem dein Programm gestartet wurde.

An sonsten gilt hier aber der Grundsatz: "Neue Frage -> Neuer Thread" ;-)

NikoMitDaMacht 28. Apr 2004 14:02

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Das Forum is einfach göttlich!!!!!

Nalincah 18. Mai 2004 08:16

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Code:
var
  F : TextFile;
  s : String;
begin
  // Auswahl des Dateinamens
  if SaveDialog1.Execute then
  begin
    // Wenn die Datei nicht vorhanden ist
    if not FileExists(SaveDialog1.Filename) then
    begin
      // erstelle Datei
      if FileCreate(SaveDialog1.Filename) = -1 then
        ShowMessage('Fehler beim erstellen der Datei');
    end;
    // Weist "F" der Datei zu
    AssignFile(F,SaveDialog1.Filename);

    // Öffne "F" und setze Cursor ans Ende
    if FileSize(F) > 0 then
      Reset(F);

    // Liest erste Zeile der Datei, speichert den Wert in s und gibt s
    // anschließend als Message aus
    ReadLn(F, S);
    ShowMessage(s);

    // Schreibe eine Neue Linie
    Writeln(F, 'asda');

    // Schließe Datei;
    CloseFile(F);
  end;
end;
Ich krieg bei

Code:
// Öffne "F" und setze Cursor ans Ende
if FileSize(F) > 0 then
  Reset(F);
immer nen E/A-Fehler 103 (Datei nicht geöffnet). Aber ich dachte AssignFile öffnet die Datei, oder??

Anubis 18. Mai 2004 08:22

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Nein Assignfile weist nur der Varibalen F die Datei zu (oder laut hilfe "Die Prozedur AssignFile weist einer Dateivariablen den Namen einer externen Datei zu.")

Reset (bzw Rewrite) öffnet die Datei

Nalincah 18. Mai 2004 08:26

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Wo liegt dann der Fehler? Die Procedure soll, nachdem der SaveDialog ausgeführt wurde, die Datei öffnen, falls sie nicht existiert, erstellen und dann öffnen und danach einen String (z.B. "ABC") in die Datei schreiben und diese danach wieder schließen

Anubis 18. Mai 2004 08:31

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Zitat:

Zitat von General2004
Wo liegt dann der Fehler? Die Procedure soll, nachdem der SaveDialog ausgeführt wurde, die Datei öffnen, falls sie nicht existiert, erstellen und dann öffnen und danach einen String (z.B. "ABC") in die Datei schreiben und diese danach wieder schließen

wenn die Datei nicht esistiert geht FileSize nicht (wenn man mal davon absieht das es mit textfiles eh nicht geht)

und wieder ein Zitat aus der Hilfe
Zitat:

Reset öffnet die in F angegebene externe Datei in dem Modus, der in der globalen Variable FileMode festgelegt ist. Ist keine Datei mit diesem Namen vorhanden oder kann die Datei nicht im aktuellen Dateimodus geöffnet werden, tritt ein Fehler auf
wenn die Datei nicht exisitiert brauchst du rewrite

also vorher prüfen ob die Datei schon da is.

[edit]
machst du ja ^^
der Fehler kommt weil die Datei offen sein muss für FileSize (also nach dem Reset), aber wie erwähnt FileSize geht nicht mit Textdateien

Nalincah 18. Mai 2004 08:34

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Was mach ich denn, wenn ich eine Datei öffne die eine Länge von 0 Bytes hat. Wie kann ich das erkennen?

s14 18. Mai 2004 08:40

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Hallo, mit dieser Funktion kannst Du die Dateigröße ermitteln:

Delphi-Quellcode:
function GetFileSize(const filename: String): Integer;
var sr : TSearchRec;
begin
  Result := -1; // bedeutet, keine Datei gefunden !!
  if FindFirst(filename, faAnyFile, SR) = 0 then Result := sr.Size;
  SysUtils.FindClose(sr);
end;

Christian Seehase 18. Mai 2004 15:53

Re: Wie kann ich eine Datei erstellen ohne Savedialog?
 
Moin Sharky,

Zitat:

Zitat von Sharky
Zitat:

Zitat von NikoMitDaMacht
...TSaveDialog erstellt wirklich keine datei sondern das "AssignFile(f,'c:\text.dat');" oder?...

Jup.

Nein, auch AssignFile erstellt keine Datei. ;-)
Diese Prozedur sorgt nur für die interne Zuordnung der Dateivariablen f mit dem Pfad ('c:\text.dat').

Erst Rewrite tut wirklich etwas.

[EDIT]
Ich sollte besser aufpassen wieviele Seiten der Thread schon hat :wall: :wall: :wall:
[/EDIT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 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-2025 by Thomas Breitkreuz