Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Textdatei speichern: Speicherort bestimmen. (https://www.delphipraxis.net/150591-textdatei-speichern-speicherort-bestimmen.html)

alex-91 21. Apr 2010 14:25


Textdatei speichern: Speicherort bestimmen.
 
Delphi-Quellcode:
dateiname:='C:\Dokumente und Einstellungen\Alex.PC-ALEX\Desktop\Maturaprojekt\Kustodius\Berichte'+raum+datum+uhr+'.txt';


 Assignfile(Datei, dateiname);
 begin
  ReWrite(Datei);
  writeln(Datei, raum);
  writeln(Datei, datum);
  writeln(Datei, edit1.text);
  for i:=0 to memo1.Lines.Count do
   begin
    writeln(Datei, Memo1.Lines[i]);
   end;
  closefile(datei);
  showmessage('Problembericht wurde gespeichert!');
 end;
Hallo!
Ich will mit meinem mini-programm eine textfile speichern und den pfad angeben. Aber wenn ich das so wie oben macht. Speichert es nichts :(
ohne C:\Dokumente und Einstellungen\Alex.PC-ALEX\Desktop\Maturaprojekt\Kustodius\Berichte wird die Datei jedoch korrekt abgespeichert.

Wo liegt denn da der fehler bzw. gibt es auch andere Möglichkeiten, den Pfad festzulegen ??
lg

himitsu 21. Apr 2010 14:33

Re: Textdatei speichern: Speicherort bestimmen.
 
Welches Betriebssystem und ist der Pfadname auch korrekt?

"Dokumente und Einstellungen" heißt z.B. in Windows Vista/7 intern ganz anders.

(im Explorer wird stattdessen ein deutscher lokalisierter Name angezeigt, aber beim Zugriff muß der Originalname angegeben werden)

alex-91 21. Apr 2010 14:35

Re: Textdatei speichern: Speicherort bestimmen.
 
windows XP
pfad stimmt... ist kopiert ...

lg

himitsu 21. Apr 2010 14:41

Re: Textdatei speichern: Speicherort bestimmen.
 
Zitat:

Speichert es nichts
Gibt es keine Fehlermeldung?
Wenn doch, wie heißt die und wenn nicht, ist die Fehlerprüfung für die Dateizugriffe deaktiviert?

Einfach so nichts machen und das ohne Fehlermeldung ist nicht gerade typisch für diese Funktionen.

bassman 21. Apr 2010 14:46

Re: Textdatei speichern: Speicherort bestimmen.
 
Hallo Alex,

nach Berichte fehlt ein \ im Pfad...

Ach ja, geht auch kürzer:
Delphi-Quellcode:
dateiname:='C:\Dokumente und Einstellungen\Alex.PC-ALEX\Desktop\Maturaprojekt\Kustodius\Berichte\'+raum+datum+uhr+'.txt';

Memo1.Lines.SaveToFile(dateiname);
Gruss, Jörn

himitsu 21. Apr 2010 14:52

Re: Textdatei speichern: Speicherort bestimmen.
 
Zitat:

Zitat von bassman
nach Berichte fehlt ein \ im Pfad...

Selbst wenn, dann sollte aber dennoch eine Dateie erstellt werden, wenn auch in einem anderem Pfad (dem Übergeordneten) und mit etwas anderem Namen (mit dem Wort "Berichte" am Anfang).

p80286 21. Apr 2010 15:56

Re: Textdatei speichern: Speicherort bestimmen.
 
@bassmann
dann hast Du aber
Delphi-Quellcode:
writeln(Datei, raum);
  writeln(Datei, datum);
  writeln(Datei, edit1.text);
unterschlagen.

@Himitsu
Da hat er aber nicht gesucht.

Gruß
K-H

alex-91 21. Apr 2010 18:32

Re: Textdatei speichern: Speicherort bestimmen.
 
@ bassmann:

Danke für den hinweis :) genau das wars
problem gelöst *hihi*

danke lg alex

Chemiker 21. Apr 2010 18:41

Re: Textdatei speichern: Speicherort bestimmen.
 
Hallo alex-91,

man sollte unbedingt IOResult einsetzen um evt. Fehler abzufangen. Zudem kannst Du auch ein SaveDialog einsetzen um den Dateiname zu speichern.

Bis bald Chemiker

DeddyH 21. Apr 2010 18:50

Re: Textdatei speichern: Speicherort bestimmen.
 
Zitat:

Zitat von Chemiker
man sollte unbedingt IOResult einsetzen um evt. Fehler abzufangen.

Oder man benutzt einfach Memo.Lines.SaveToFile in einem try-except-Block :zwinker:

himitsu 21. Apr 2010 18:51

Re: Textdatei speichern: Speicherort bestimmen.
 
Zitat:

Zitat von Chemiker
man sollte unbedingt IOResult einsetzen um evt. Fehler abzufangen.

Wenn die Fehlerprüfung seitens Delphi aktiv ist, dann ist das nicht nötig, bzw. sogar umsonst,
denn Delphi setzt bei aktiver Fehlerprüfung nach jeden der Datei-Befehle (Reset, Append, Rewrite, Read, ReadLn, Write, WriteLn BlockRead usw.) einen Code, welcher IOResult ausließt und notfalls eine Exception auslößt.
Heißt also, wenn man in soeinem Fall IOResult auswerten will, dann kommt man garnicht dazu, da Delphi schon vorher reagiert.

Aus diesem Grund schaltet man auch die Fehlerprüfung lokal ab (mit {$I-} ), wenn man mit IOResult selber prüfen will.

Helmi 21. Apr 2010 18:52

Re: Textdatei speichern: Speicherort bestimmen.
 
Hallo,

mich wunderts dass keine Access Violation gekommen ist.

Denn das hier müsste eine liefern:
Delphi-Quellcode:
  for i:=0 to memo1.Lines.Count do
   begin
    writeln(Datei, Memo1.Lines[i]);
   end;
es müsste dann schon so lauten:
Delphi-Quellcode:
  for i:=0 to Pred(memo1.Lines.Count) do  // bzw. memo1.Lines.Count - 1
   begin
    writeln(Datei, Memo1.Lines[i]);
   end;

Chemiker 21. Apr 2010 19:17

Re: Textdatei speichern: Speicherort bestimmen.
 
Hallo,

das war nur ein Hinweis in der Hilfe von Delphi findet man mehr.

Bis bald Chemiker

xZise 21. Apr 2010 22:43

Re: Textdatei speichern: Speicherort bestimmen.
 
Moin,
Zitat:

Zitat von p80286
@bassmann
dann hast Du aber
Delphi-Quellcode:
writeln(Datei, raum);
  writeln(Datei, datum);
  writeln(Datei, edit1.text);
unterschlagen.[...]

Bisschen kopieren vorher ;)
Delphi-Quellcode:
var
  sl : TStrings;
begin
  sl := TStringList.Create;
  try
    sl.Assign(Memo1.Lines);
    sl.Insert(0, raum);
    sl.Insert(1, datum);

    // Alternativ statt des assigns da oben, dürfte auch das gehen:
    sl.AddStrings(Memo1.Lines);
    // Dann kann man aus Insert ein Add machen.

    sl.SaveToFile(...);
  finally
    sl.Free;
  end;
end;
MfG
Fabian


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