Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datei beim Programmstart erstellen lassen (https://www.delphipraxis.net/35511-datei-beim-programmstart-erstellen-lassen.html)

Wolverine 8. Dez 2004 11:21


Datei beim Programmstart erstellen lassen
 
Hi Leute,
ich habe ein Problem was ich trotz der "Suchenfkt." nicht gelöst bekomme.
Entweder binn ich zu doof zum suchen oder es gibt noch keine Lösung für dieses Problem, ich gehe aber von ersterem aus.

Es geht sich hier um folgendes und zwar will ich, wie der Titel schon sagt, eine Datei beim Programmstart erstellen lassen.
Dabei hatte ich an eine Prozedur in der "OnCreate" Funtkion gedacht ungefähr so:

Code:
function OnCreate ........
begin
 Create 'Temp.txt';
end;
Ich hoffe ihr könnt mir bei meinem Problem weiterhelfen :wink:

Danke und Greetz

Oovas 8. Dez 2004 11:28

Re: Datei beim Programmstart erstellen lassen
 
Versuch es mal so:
Delphi-Quellcode:
...
 var f : TextFile;
 var Ueberschrift: String;
...

// Datei definieren und erstellen
 AssignFile(F, DateinameUndPfad);
 {$IOCHECKS OFF}
 ReWrite(F);
 {$IOCHECKS ON}
 if IOResult = 0 then
 begin
   Ueberschrift := 'Hallo';
   Writeln(F, Ueberschrift);
 end
 else
 begin
   ShowMessage('Datei konnte nicht erstellt werden.');
 end;

...
//Datei schließen
CloseFile(F);

Wolverine 8. Dez 2004 11:51

Re: Datei beim Programmstart erstellen lassen
 
Hallo Oovas.

Danke für die schnelle Reaktion. Funtkioniert echt super. :thumb: Genauso hab ich mir das vorgestellt.
Aber ein paar Fragen hab ich noch:
1) Die Überschrift muss ich ja nicht mit übergeben bzw. überhaupt erst die Prozedur dafür verfassen oder?
2) Wofür sind {$IOCHECKS OFF} bzw. {$IOCHECKS ON} gut und was bezwecken die???
3) Sehe ich das richtig, dass Daten erst sichtbar in die Datei geschrieben werden wenn sie über CloseFile(F) geschlossen wird?

Greetz

Oovas 8. Dez 2004 12:04

Re: Datei beim Programmstart erstellen lassen
 
zu 1: Nein, brauchst du natürlich nicht, ich wollte dir damit nur zeigen, wie du was in die Datei schreiben kannst
zu 2: Dies sind sog. E/A-Prüfungen in Delphi. Mit IOResult = 0 prüfst du ob die Datei korrekt angelegt wurde, dann
kannst du was reinschreiben (oder auch nicht :-))
Dazu findest du auch was in der Delphi-Hilfe.
zu 3: Eigentlich nicht, soweit ich mich noch erinnere...... Schlagt mich wenn nicht.
Writeln schreibt soweit ich weis direkt in die Datei.
CloseFile(f) schließt dir deinen Dateizugriff.

Jasocul 8. Dez 2004 12:14

Re: Datei beim Programmstart erstellen lassen
 
zu 3)
Es kann aber sein, dass das erst gepuffert wird. CloseFile schreibt dann auch den Puffer weg.

jensw_2000 8. Dez 2004 12:20

Re: Datei beim Programmstart erstellen lassen
 
Zitat:

Writeln schreibt soweit ich weis direkt in die Datei.
CloseFile(f) schließt dir deinen Dateizugriff.
So isses :mrgreen:

Wolverine 8. Dez 2004 12:41

Re: Datei beim Programmstart erstellen lassen
 
Ich hatte nämlich vor, die Sachen die in die Datei geschrieben werden sofort wieder auslesen zu lassen.
Deswegen habe ich gefragt.
Nach dem was ich bisher gesehn und herausgefunden habe ist dies nicht möglich, weil die Sachen erst nach dem "CloseFile" Befehl "sichtbar" gemacht werden.

Gibt es da evtl. noch ne andere Lösung??? :gruebel:

Hansa 8. Dez 2004 12:45

Re: Datei beim Programmstart erstellen lassen
 
Zitat:

Zitat von Wolverine
...Gibt es da evtl. noch ne andere Lösung??? :gruebel:

Indem du die Datei danach mit "reset" wieder zum Lesen öffnest. :???:

Wolverine 8. Dez 2004 12:54

Re: Datei beim Programmstart erstellen lassen
 
Werden denn dann die Inhalte nicht gelöscht???
Und .... wie würde denn dann der Code aussehen? Evtl. so:

Code:
.....
procedure TForm1.Button1Click(Sender: TObject);
begin
Writeln(F, ComboBox1.Text);
OleContainer1.OleObject.Navigate(ComboBox1.Text);
CloseFile(F);
ResetFile(F);
end;
......
Die Prozedur wird ja von oben nach unten abgearbeitet, daher sollte der Code oben doch funktionieren !?!?!?

Danke schon mal für Eure Antworten und Hilfe.

Greetz

Wolverine 10. Dez 2004 12:27

Re: Datei beim Programmstart erstellen lassen
 
Hallo,

nun steh ich schon wieder vor einem Problem, aber wahrscheinlich nur weil ich den Wald vor lauter Bäumen nicht seh :shock:
Ich habe es geschafft, die Datei erstellen zu lassen. Wenn das Programm beendet kommt ne Abfrage ob die Datei beibehalten werden soll oder nicht. Das funktioniert alles wunderbar.

Nun zu meinem Prob:
- Wenn ich das Programm starte, die Datei erstellt wird und ich eine Seite aufrufe wird diese in der Datei gespeichert.
- Gebe ich nun eine andere Seite ein um die aufzurufen bricht das Programm mit einer Fehlermeldung und einem Verweis auf die "Writeln" Zeile ab.

Hoffentlich könnt ihr mir helfen. Ich werde auch noch etwas Code uppen um euch die Suche zu erleichtern.

Danke schon mal im voraus.

edit ---> Hier der Code:
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
OleContainer1.CreateObject('Shell.Explorer', False);
if FileExists('Temp.eab') then
 begin
  ShowMessage('Temporärer Verlauf aus Temp.eab geladen.');
  tempon:=1;
 end
else
 begin
  //Datei definieren und Erstellen
  AssignFile(F, 'Temp.eab');
  {$IOCHECKS OFF}
  ReWrite(F);
  {$IOCHECKS ON}
  if IOResult = 0 then
   begin
    Ueberschrift := 'Temporärer Verlauf';
    Writeln(F, Ueberschrift);
   end
  else
   begin
    ShowMessage ('Datei konnte nicht Erstellt werden');
   end
 end
end;

.......

procedure TForm1.Button1Click(Sender: TObject);
begin
Writeln(F, ComboBox1.Text); //auf diese Zeile wird bei Programmabbruch verwiesen
CloseFile(F);
OleContainer1.OleObject.Navigate(ComboBox1.Text);
Reset(F);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:28 Uhr.
Seite 1 von 2  1 2      

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