![]() |
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: |
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Was für eine Datei willst du denn erstellen?
|
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
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" |
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Tja... eine text datei mit der endung *.dat (also eine *.dat-Datei)
|
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. |
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');
|
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Also ich habe so einen ich nenns mal "Trecord" so stehst eim Type :
Delphi-Quellcode:
so ... und dann un das zu nutzen hab ich's so gemacht
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; ...
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: |
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:
:dancer2:
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; |
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Zitat:
Sie geben dir immer nur einen Pfad inkl. Dateinamen zurück. Was Du daraus machst ist dann deine Sache. |
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
wo willst du denn die Datei hinspeichern? Ich würde noch ein
Delphi-Quellcode:
davorhängen, wenn sie in das Verzeichnis der exe soll!
ExtractFilePath(application.exename)
|
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
es hat so geklappt danke!!1 :cheers:
|
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Kannst du mir das mit dem "ExtractFilePath(application.exename)" erkären?
|
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:
Kannste ja noch reinschreiben, wenn de lustig bist! :mrgreen:
dateiname:=ExtractFilePath(application.exename) + 'datei.dat';
|
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Zitat:
An sonsten gilt hier aber der Grundsatz: "Neue Frage -> Neuer Thread" ;-) |
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Das Forum is einfach göttlich!!!!!
|
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Code:
Ich krieg bei
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;
Code:
immer nen E/A-Fehler 103 (Datei nicht geöffnet). Aber ich dachte AssignFile öffnet die Datei, oder??
// Öffne "F" und setze Cursor ans Ende
if FileSize(F) > 0 then Reset(F); |
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 |
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
|
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Zitat:
und wieder ein Zitat aus der Hilfe Zitat:
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 |
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?
|
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; |
Re: Wie kann ich eine Datei erstellen ohne Savedialog?
Moin Sharky,
Zitat:
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