Avatar billede koden12 Nybegynder
27. juli 2003 - 13:58 Der er 9 kommentarer og
2 løsninger

Et dir problem

Jeg har lagt en database i fx C:\sp\temp\test.mdb  men
det er jo ikke sikkert at filen kommer til at ligge samme sted på en anden PC.
Hvordan laver jeg en "find test.mdb lige meget hvor den ligger på denne pc " ?
Sådan noget Som FX
Dir := ExtractFilePath(Application.ExeName);
if Dir[Length(Dir)] <> '\' then Dir := Dir + '\';
som jeg har fundet. Men der mangler en dir var som String ? måske.
Har nogle en bid der kan bruges ?
VH
SpørgerJørgen
Avatar billede erikjacobsen Ekspert
27. juli 2003 - 14:16 #1
Du beder brugeren om at konfigurere ved installation, og skriver
svaret i en ini-fil eller i registreringsdatabasen, som dit program så
efterfølgende kigger i.
Avatar billede athlon-pascal Juniormester
27. juli 2003 - 14:56 #2
Læg databasen i samme mappe som dit program, og bed alle om at gøre det samme. Så kan du bruge Application.ExeName, som du jo kender.

Hvis databasen skal kunne ligge overalt på harddisken, så skal du søge hele harddisken igennem hver gang programmet startes. Du kan jo prøve at bruge Windows' filsøgefunktion, og søge efter test.mdb i C:\ og alle undermapper, og så prøve at se hvornår den er færdig med at lede. Husk at filen lige så godt kan bive fundet til sidst...
Avatar billede koden12 Nybegynder
27. juli 2003 - 16:12 #3
Tak for din tillid, men nej kender ikke Application.Exename eller hvad det er for noget.
Jeg sidder og fedter med noget det kommer til at ligne det her :
var
path :String;
filename : string;
filename := min.mdb

filename := path + '\filename';

eller sådan noget ligende
Der er også noget i bogen :
path := PChar(path);
det ved jeg ikke hvad er ?
VH
SpørgerJørgen
Avatar billede cms Nybegynder
27. juli 2003 - 16:37 #4
koden12-> Den metode, athlon-pascal snakker om, er den du skrev i spørgsmålet. Følgende kode gør, at strengen FileName kommer til at pege på filen c:\sti\til\mitprogram\min.mdb
(hvor "c:\sti\til\mitprogram" er stien til dit program)

var
  Dir, FileName: String;
begin
  Dir := IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)); //Læg stien til mit program i "Dir"
  FileName := Dir + 'min.mdb'; //Læg stien til mit program plus filnavnet i "FileName"

  //... brug FileName til et eller andet...:
  ShowMessage(FileName);
end;

Med denne metode behøver du blot sikre dig, at filen ligger i samme bibliotek som dit program (din exe-fil)
Avatar billede koden12 Nybegynder
27. juli 2003 - 16:59 #5
Waw tak det var lige hvad jeg manglede.
Der er godt nok mange nye navne som :
ExtractFilePath og IncludeTrailingBackslach.
VH
SpørgerJørgen
Avatar billede koden12 Nybegynder
27. juli 2003 - 17:05 #6
Hvor giver jeg point ?
Avatar billede cms Nybegynder
27. juli 2003 - 17:36 #7
Da vi alle har kommenteret indtil nu, skal vi lægge et svar, før du kan give os point.
Avatar billede athlon-pascal Juniormester
28. juli 2003 - 11:16 #8
ExtractFilePath trækker filnavnet fra, så du kun får stien.
IncludeTrailingBackslach sikrer at der er en \ til sidst.
Held og lykke :-)
Avatar billede athlon-pascal Juniormester
28. juli 2003 - 11:17 #9
if Dir[Length(Dir)] <> '\' then Dir := Dir + '\';
er faktisk det samme som IncludeTrailingBackslash(Dir); :-)
Avatar billede cms Nybegynder
29. juli 2003 - 20:31 #10
Yeps
Avatar billede koden12 Nybegynder
29. juli 2003 - 21:26 #11
Og tror i måske lige jeg har gemt den eller hva :)
Tak
SprøgerJørgen
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