02. september 2003 - 09:52
Der er
23 kommentarer og 1 løsning
Oprettelse af fil / path
Hej.... Jeg har følgende kode i BCB5, hvor jeg vælger at gemme filen på D:\, men hvordan vælger jeg at den skal gemme i det samme Dir som EXE filen ligger?? hvis jeg bare fjerner D:\\, så lægger den der ikke.... FILE *stream; char *ToSave = "#1="; stream = fopen("D:\\Easyconfig.ini", "w"); if (stream) { strcat(ToSave,Directory->Directory.c_str()); fputs(ToSave,stream); fclose(stream); frmMain->SaveDir = Directory->Directory; } Close();
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
02. september 2003 - 09:58
#1
Under Windows kan du finde sti + navn på din exe ved at bruge GetModuleFileName(), du kan så bruge stien som basis når du gemmer filer.
02. september 2003 - 10:14
#2
Der må da næsten være en nemmere måde, ellers skal jeg jo også til at filtrere EXE filens navn væk
02. september 2003 - 10:27
#3
under windows kan du bruge char path[MAX_PATH]; GetCurrentDirectory(MAX_PATH, path);
02. september 2003 - 10:29
#4
At "kappe" lidt af strengen er da ikke galt... Her er et eksempel der anvender MFC's CString: (jo, jeg ved godt du ikke bruger CString, men ideen er der...) CString CMyApp::GetExePath() { TCHAR szEXEPathname[_MAX_PATH]; GetModuleFileName(NULL, szEXEPathname, _MAX_PATH); CString ExeName(szEXEPathname); return ExeName.Left(ExeName.ReverseFind('\\')); }
02. september 2003 - 10:30
#5
squashguy >> current dir kan sagtens være noget andet, end der hvor .exe-filen ligger.
02. september 2003 - 11:02
#6
Er der virkelig ikke en property som viser hvilken mappe exe filen ligger i?? er da underligt...
02. september 2003 - 11:14
#7
Øh, hvor skulle den property være..? Windows' filsystem har værdien for filens parent dir, men den skal du jo bruge runtime, i dit program... Borlands Windows wrapper classes kunne naturligvis godt have en property, det skal jeg ikke kunne sige...
02. september 2003 - 11:18
#8
Kunne jo godt have været en Application->GetExeDir(); eller noget... men det er der ikke... Jeg kan finde hele stien C:\blah\project1.exe String TEST; TEST = Application->ExeName; Så er det bare lige hvordan jeg filtrerer \project1.exe fra....
02. september 2003 - 11:23
#9
Har String ikke en metode som hedder fx SubStr, Left, Mid, eller lign..?
02. september 2003 - 11:24
#10
jo SubString...
02. september 2003 - 11:27
#11
Og hvad med FindLast, ReverseFind eller lign..?
02. september 2003 - 11:29
#12
Nahh... Er noget med AnsiPos og sådn... men ellers ikke :o(
02. september 2003 - 11:31
#13
Hvad med IndexOf?
02. september 2003 - 11:37
#14
nahh
02. september 2003 - 11:39
#15
Man kan gøre det sådan: String ged; ged = Application->ExeName; int size = strlen(ged.c_str()); ged = ged.SubString(1,size-12); ShowMessage(ged); Men det kræver så at der ikke er nogen der renamer exe filen.. for lige nu minuser jeg med 12 da strlen(project1.exe) == 12
02. september 2003 - 11:46
#16
Der må da være en form for Find-metode til at finde '\' (backslash), ellers kan du naturligvis selv lave en...
02. september 2003 - 12:18
#17
Jahh, det er jo bare lige hvordan? :o( lidt noget skod....
02. september 2003 - 12:33
#18
Er der ikke noget online dokumentation til String, som jeg kan se?
02. september 2003 - 12:39
#19
02. september 2003 - 12:42
#20
02. september 2003 - 12:43
#21
Kan også få det ud som en const char*: ged.c_str()
02. september 2003 - 12:53
#22
Nåhh, har bare lavet det statisk... tak for hjælpen, smid et svar
02. september 2003 - 12:53
#23
Hmm, den har godt nok en find-metode, nemlig Pos, men den virker fra starten af strengen... Det er vist ikke komplet dok? Hvad med at bruge STL's string? #include <string> using std::string; string CMyApp::GetExePath() { TCHAR szEXEPathname[_MAX_PATH]; GetModuleFileName(NULL, szEXEPathname, _MAX_PATH); string ExeName(szEXEPathname); return ExeName.substr(ExeName.rfind('\\')); }
02. september 2003 - 12:55
#24
STL's string er standard i C++ og virker derfor også på andre platforme
Kurser inden for grundlæggende programmering