Einzelnen Beitrag anzeigen

Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8
  Alt 21. Jan 2003, 19:45
Hallo Mada,

der Fehler liegt nur indirekt an dem Speichervorgang in Quickreport. In Wirklichkeit liegt der Fehler in deiner OnActivate Methode:

Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
var cfgdatei:TextFile;
   str:string;
begin
    { füge hier mal den Code unten ein :-) }
    AssignFile(CfgDatei,'.\daten03\03.key');
Du arbeitest hier mit einem relativen Pfad. Immer wenn du mit relativen Pfaden arbeitest, wird der Pfad relativ zum aktuellen Verzeichnis des Laufwerkes der entsprechenden Platte interpretiert. Du kannst dir den aktuellen Pfad des Laufwerks C: wie folgt anzeigen:

Delphi-Quellcode:
   GetDir(3, str);
   ShowMessage(str);
Wenn du das Programm startest wird hier wie du erwartest der Pfad relativ zum Programmpfad angezeigt. Wenn du jetzt einen Report speicherst, wird das aktuelle Verzeichnis für C: auf den Pfad gesetzt, in dem du den Bericht gespeichert hast. Dann geht die Assign Anweisung natürlich schief. Was kannst du dagegen tun?

Arbeite NIE mit relativen Pfaden. Hole dir mit ExtractFilePath(Application.ExeName) im OnCreate Event den Pfad und speichere ihn in einer Variablen:

BasisPfad := ExtractFilePath(Application.ExeName); Dann kannst du diesen später als Basispfad benutzen:

 AssignFile(CfgDatei, Basispfad+'\daten03\03.key'); Auch für die Zugriffe auf deine Tabellen solltest du als DatabaseName einen Alias einrichten oder den Pfad wie oben beschrieben ermitteln und in alle Tabellenobjekte in der OnCreate Methode einfügen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat