![]() |
assignfile: standardverzeichnis
hallöchen!
bevor mir jetzt noch mehr graue haare wachsen frage ich mal das liebe forum: wenn ich bei assignfile im zweiten parameter kein verzeichnis angebe sondern nur den dateinamen 'base.dat', wo sucht delphi dann die datei bzw. schreibt es sie hin?! ich habe schon in diversen projekteinstellungen gesucht, aber nix gefunden... ich gehe mal davon aus, dass es das verzeichnis ist, in dem auch die .exe des programms liegt?! in leserichtung würde das stimmen, aber wenn ich aine datei so schreibe, landet die woanders :-( es muss doch eine stelle geben, wo man das einstellt, oder? danke schonmal! der bene |
Re: assignfile: standardverzeichnis
Hallo,
ohne eine absolute Pfadangabe werden deine Dateinamen in Bezug zum aktuellen Arbeitsverzeichnis (current working directory) gesetzt. Einstellen kannst du das über eine Shell-Verknüpfung oder im Programm über ChDir() oder auch einen der Standard-Dialoge (OpenDialog, SaveDialog). Ermitteln kannst du das cwd über GetDir(0, dir). Grüße vom marabu |
Re: assignfile: standardverzeichnis
wow, danke für die schnelle antwort!
dann lag ich ja also gar nicht soo falsch. aber wie kann es denn dann sein, dass er mir die datei beim speichern woanders hinschmeißt?! :cry: kann es sein, dass man das in der IDE voreinstellen kann, und ich die stelle/den menüpunkt nicht finde? |
Re: assignfile: standardverzeichnis
Nein, wie gesagt es wird das aktuelle Arbeitsverzeichnis genommen Am Besten du gibts dem AssignFile() einen Pfad mit
|
Re: assignfile: standardverzeichnis
Moin benicz,
wie marabu schon geschrieben hat: Es gibt einige Möglichkeiten, das Arbeitsverzeichnis zu verbiegen, so dass es grundsätzlich keine gute Idee ist auf Basis eben dieses Verzeichisses zu arbeiten. Besser ist es in speziellen Windows-Verzeichnissen, oder relativ zum eigenen Programm (ExtractFilePath(paramstr(0)) die Daten zu speichern (letzteres sollte aber nur für Daten gelten die während des Programmlaufes nur gelesen werden, da ein normaler User im Programmverzeichnis keine Schreibrechte hat). |
Re: assignfile: standardverzeichnis
vielleicht sollte ich doch noch was mehr schreiben:
die datei, um die es geht ist dazu da, sich eine art "arbeitsverzeichnis" zu merken. in ihr steht der ein weiterer dateiname der datei, die sozusagen eine basiskonfiguration des programmes beinhaltet. die soll der user natürlich selbst ändern und abspeichern können, und sie soll nicht im programmverzeichnis sein müssen. das hab ich für einen annehmbaren workaround gehalten... |
Re: assignfile: standardverzeichnis
Dann nimm ne Ini oder speichere in die Registry
|
Re: assignfile: standardverzeichnis
Zitat:
|
Re: assignfile: standardverzeichnis
Zitat:
|
Re: assignfile: standardverzeichnis
um nochmal zur frage zu kommen:
beim einlesen der datei habe ich kein problem, ich wundere mich nur, dass er sie völlig wo anders hinschreibt, wenn ich ohne verzeichnisangabe abspeichere. eigentlich sollte er doch dasselbe benutzen, oder? es kann sein, dass ich in irgendeinem urschleimstatus des projektes mal versucht habe eine art arbeitsverzeichnis vorzugeben bei den projekteinstellungen. aber ich habe im laufe der zeit ein neues projekt angefangen und neu aufgebaut, das kann eigentlich nicht übernommen worden sein... |
Re: assignfile: standardverzeichnis
Moin benicz,
um die Frage noch einmal zu beantworten: ;-) Das Arbeitsverzeichnis kann sich während des Programmlaufes, und vor dem Start (durch den Eintrag des Verzeichnisses in einem Link) ändern, so dass Du also nicht davon ausgehen kannst die Datei an der erwarteten Stelle zu finden. |
Re: assignfile: standardverzeichnis
sollte er auch :gruebel:
bist du sicher, daß nirgends (beim Lesen und Schreiben) ein Verzeichnis angegeben wird? [add] stimmt, oder es könnte so sein wie Christioan es sagt :angel: |
Re: assignfile: standardverzeichnis
nachtigall ick hör dir trappsen!
es ist also so, dass der pfad bei jeder angabe geändert wird und auch da "bleibt", ja? daaaaaas is dann natürlich was anderes! er macht also jedes mal, wenn ich ihm ein verzeichnis nene eine art chdir? das wäre die lösung, glaub ich. |
Re: assignfile: standardverzeichnis
Du hast das mißverstanden, du sollst beim Öffen den bestimmten Pfad mitübergeben um sicherszustellen, daß er den richtigen Pfad hat.
|
Re: assignfile: standardverzeichnis
wenn aber das verzeichnis nach programmstart das ist, in dem die .exe liegt, ist es ja das richtige.
ich weiß ja jetzt noch nicht, wo der user das ganze hininstalliert... andere idee: gibt getdir(0,bla) das (stamm-)verzeichnis zurück? dann merk ich's mir halt für die laufzeit. ich muss ja eventuell auch wieder was da reinschreiben... |
Re: assignfile: standardverzeichnis
Du kannst aber nicht sicher sein, daß es das Verzeichnis der Exe ist!!!! Deshalb Verzeichnis mit angeben!
Delphi-Quellcode:
ExtractFilePath( Application.ExeName)+"<datei.ext>"
|
Re: assignfile: standardverzeichnis
aber beim programmstart ist es das doch, oder jetzt doch nicht??
ich habe es jetzt so gemacht, dass ich, bevor irgendwas passiert, mit getdir dieses verzeichnis "sichere" und den wert wieder benutze, wenn ich diese ini-datei schreibe. und es klappt... Zitat:
welche (evtl. elegantere) lösung gäbe es denn noch, mein "programmverzeichnis" rauszukriegen? |
Re: assignfile: standardverzeichnis
Zitat:
|
Re: assignfile: standardverzeichnis
der schein trügt aber ziemlich! :gruebel:
aber ich habe jetzt verstanden, dass "application.exename" nicht nur platzhalter war... manchmal werden die knoten im hirn aber auch verdammt groß! :wall: ich hab's jetzt und danke allen für die superschnellen und geduldigen hilfen! schönen abend noch der bene |
Re: assignfile: standardverzeichnis
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 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 by Thomas Breitkreuz