Avatar billede Slettet bruger
16. oktober 2005 - 11:04 Der er 16 kommentarer og
1 løsning

problem med opendialog sti

jeg har en opendialog som henter filnavne(kun exe filer) ind i en richedit

kode:

if op.Execute then
richedit1.Text := extractfilename(op.FileName);

når jeg så vil gemme richedit bruger jeg:

kode:

richedit1.lines.savetofile('exefiles.txt');

men hvorfor gemmes min tekst fil i det sidste bibliotek som opendialog har været?

burde den ikke gemme filen i biblioteket hvor programmes exe fil er når man ikke har lavet en præcis men en relativ

jeg kan godt gemme filen hvis jeg skriver ('c:\test\exefiles.txt'); men det er jo ikke smart hvis man ikke har kontrol over hvor programmet bliver gemt, om det er på c eller d eller osv.
Avatar billede erikjacobsen Ekspert
16. oktober 2005 - 11:07 #1
Aflæs aktuelt katalog ved start af programmet, og husk det i en variabel. Så er du ude over det problem.
Avatar billede Slettet bruger
16. oktober 2005 - 11:23 #2
det blev jeg ikke klogere af, kan du ikke uddybe det lidt?
Avatar billede erikjacobsen Ekspert
16. oktober 2005 - 11:26 #3
Jo, måske, hvis du kan fortælle hvad det er du ikke forstår.
Avatar billede Slettet bruger
16. oktober 2005 - 11:44 #4
hvordan aflæser man aktuel katalog ?
Avatar billede snowball Novice
16. oktober 2005 - 11:47 #5
ExtractFilePath(Application.ExeName)

Det giver dit folderen hvor dit program er kørt fra.
Avatar billede Slettet bruger
16. oktober 2005 - 12:19 #6
den gemmer stadig tekstfilen i det sidste aktuelle bib
Avatar billede erikjacobsen Ekspert
16. oktober 2005 - 12:33 #7
Hvad er din kode for aflæsning af katalog og bruge af det?
Avatar billede Slettet bruger
16. oktober 2005 - 12:42 #8
//åbner opendialog1
procedure TForm2.Button4Click(Sender: TObject);
begin
if
op.execute then
richedit1.Text := extractfilename(op.FileName);
end;

//Gem
procedure TForm2.Button5Click(Sender: TObject);
begin
Richedit1.Lines.SaveToFile('exefiles.txt');
end;
Avatar billede erikjacobsen Ekspert
16. oktober 2005 - 12:44 #9
Jeg kan se du ikke har forstået hvad vi snakker om ;) 

Du skal jo i

  Richedit1.Lines.SaveToFile('exefiles.txt');

have skrevet et katalog på, fx (sådan ca.):

  Richedit1.Lines.SaveToFile(katalog+'exefiles.txt');

og så i starten af dit progran (sådan ca.):

  katalog:=ExtractFilePath(Application.ExeName);
Avatar billede Slettet bruger
16. oktober 2005 - 13:01 #10
jeg kan godt se at katalog er en variabel

var
katalog: string


men den gemmer stadig tekstfilen et andet sted end der hvor program filen er
Avatar billede erikjacobsen Ekspert
16. oktober 2005 - 13:50 #11
Jo, men det kan vi ikke bruge til nogte. Hvad er din kode nu?
Avatar billede Slettet bruger
16. oktober 2005 - 13:58 #12
var
katalog: string;
begin
Richedit1.Lines.SaveToFile(katalog+'exefiles.txt');

og så i create
var
katalog:string;
begin
katalog:=ExtractFilePath(Application.ExeName);

det er åbenbart opendialog som styrer hvor jeg skal gemme min tekst fil

hvis jeg ikke bruger opendialog så gemmes det rigtigt. Men jeg er afhængig af opendialogen for at hente filnavne til richedit
Avatar billede erikjacobsen Ekspert
16. oktober 2005 - 14:20 #13
Du skal erklære "katalog" som en global variabel.
Avatar billede stoney Nybegynder
16. oktober 2005 - 15:03 #14
procedure TForm1.Button1Click(Sender: TObject);
begin
//savedialog1.InitialDir := ExtractFilePath(Application.ExeName); // hvis det skal være samme sti som prog
savedialog1.InitialDir := opendialog1.InitialDir; // samme sti som sidste opdendialog
// savedialog1.InitialDir := 'c:\mini_data  , hvis det skal være forudbestemt
if savedialog1.Execute then
richedit1.Lines.SaveToFile(savedialog1.FileName);
end;

Stoney
Avatar billede Slettet bruger
16. oktober 2005 - 15:58 #15
stoney: jeg bruger ikke en TsaveDialog

erikjacobsen: nu virker det med global variabel

den bliver nu gemt i exe biblioteket

smid et svar
Avatar billede erikjacobsen Ekspert
16. oktober 2005 - 16:00 #16
Jeg samler ikke på point, tak.

Du kan så overveje om din fil skal gemmes i .exe-kataloget, eller i brugerens aktuelle katalog, når han starter programmet, eller i et katalog, der hentes i registreringsdatabasen, eller ...

I nogle af disse tilfælde behøver du ikke aflæse kataloget fra start - det er blot det mest generelle.
Avatar billede Slettet bruger
16. oktober 2005 - 16:32 #17
ok takker for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester