|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2007
Messaggi: 4
|
[C] Ottenere il full path di un file
Ciao a tutti, sono nuovo di questo forum.
Volevo chiedervi come sia possibile in C ottenere il full path di un file per poi aprirlo. Cioè mi piacerebbe avere una funzione equivalente alla ExtractFilePath() del Delphi. Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Puoi riscrivere a mano la funzione ExtractFilePath copiando la stringa dall'inizio all'ultimo separatore di directory, / o \ a seconda del sistema operativo. Ci sono delle funzioni della Windows API che possono aiutarti, vedi a tal proposito questa discussione.
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
devi solo agganciargli dietro la current working directory, per ottenere la quale devi usare la funzione getcwd.
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
"Pseudo-codice" Delphi: Codice:
function ExtractFilePath(const FileName: string): string; begin Result := Copy(FileName, 1, TrovaUltimoSlash(FileName)); end; Ultima modifica di variabilepippo : 15-12-2007 alle 16:00. |
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
anche se si trova in una sottocartella deve comunque preporre il path della current working directory. se invece si trova in una cartella non raggiungibile partendo dalla current working directory allora o è un path assoluto o è un path senza senso.
|
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Dec 2007
Messaggi: 4
|
Innanzitutto grazie per la tempestività delle risposte.
Il discorso è questo: è un programmino che archivia i titoli dei divx e li salva su un file binario. Il file è nella stessa directory del programma e funziona tutto scrivendo file = fopen("database.dat", "r"); Il problema nasce quando per questa applicazione con InnoSetup5 creo il file di installazione. Una volta installato, il programma funziona, ma i collegamenti che crea non funzionano(ad es. quello sul desktop). Allora come suggeritomi ho sostituito il codice sopra con questo: char buffer[4096]; const int MAXLENGHTPATH = 4096; getcwd(buffer, MAXLENGHTPATH); strcat(buffer, "\\database.dat"); file = fopen(buffer, "r"); Stessa cosa il programma funziona regolarmente dalla cartella dove viene istallato ma non dai collegamenti. Sul manuale di InnoSetup5 c'è scritto relativamente a quel problema di usare la funzione ExtractFilePath(). Come posso fare? |
|
|
|
|
|
#7 | |||
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Quote:
La funzione ExtractFilePath opera con percorsi assoluti, quindi stando alla richiesta iniziale l'utente vorrebbe ottenere la stringa c:\pluto\paperino\pippo\ dal path completo c:\pluto\paperino\pippo\immagine.jpg. Quote:
|
|||
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
non sapevo che la ExtractFilePath funzionasse così... (non ho Delphi)
dalla spiegazione del primo post avevo capito un'altra cosa. PS: la documentazione di Delphi (VCL e RTL) è consultabile online da qualche parte? esiste una sorta di Borland Developer's Network? |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
Per una consultazione rapida puoi cercare classi e funzioni su Delphi Basics. |
|
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Dec 2007
Messaggi: 4
|
Variabile pippo, ho fatto come mi hai consigliato. Ora funziona tutto. Grazie.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:52.




















