Newsgroup: it.comp.programmare.win32
Titolo: Cercare sottostringa in una stringa

 
 
Mi sapete dire quale funzione Win32 utilizza Windows per cercare
una sottostringa in una stringa?
Che si possa utilizzare in un programma console scritto in C.
 
 
Gr�zie
 
Ciao 
 
 


Nessuna, ma puoi usare quella del runtime:
http://msdn.microsoft.com/en-us/library/z9da80kz%28v=vs.80%29.aspx
 

 ha scritto nel messaggio
news:5193dc0e$0$37128$4faf...@reader1.news.tin.it...

Sai quale funzi�ne serve per invocare la finestra di SalvaFile, e quale
sotto funzione chiamare per inviare dalla clipboard il nome del file
alla casella di input della finestra SalvaFile? :-)
 
 
Ciao
 
 
 
 

 Ciao
 
 

 alla casella di input della finestra SalvaFile? :-)
 
Usare la clipboard non serve, puoi inserire il nome del file 
direttamente nel campo lpstrFile della struttura OPENFILENAME, prima di 
chiamare la GetSaveFileName().

 
 
Sto provando con questo codice:
 
BOOL WINAPI GetSaveFileNameA(LPOPENFILENAMEA);
 
OPENFILENAME ofn;
char FileName[1024];
HWND hwnd = NULL;
HANDLE hf;
 
      ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFile = FileName;
 
ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFile = FileName;
    ofn.nMaxFile = sizeof(FileName);
    ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    if (GetSaveFileNameA(&ofn)==TRUE)
        hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
            0, (LPSECURITY_ATTRIBUTES) NULL,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
            (HANDLE) NULL);
 
ma compare questo errore:
 
(.text+0x183): undefined reference to `GetSaveFileName
A@4'
collect2: ld returned 1 exit status
 
Per aprire una finestra SalvaFile si deve utilizzare tutto questo codice? 
:-)
 
 
Ciao
 
 
 
 

 Per aprire una finestra SalvaFile si deve utilizzare tutto questo codice?
 
In realta' e' solo una chiamata, tutto il resto serve solo a 
parametrizzarla. Concordo sul fatto che sia macchinoso, ma questo rende 
possibile configurare la chiamata per diverse esigenze, anche se a te 
magari non interessa.
 
Se non ti interessa la retro-compatibilita' (win9x, 2k, XP) puoi usare 
le nuove Common Item Dialog che funzionano da Vista in poi:
 
http://msdn.microsoft.com/en-us/library/windows/desktop/bb776913%28v=vs.85%29.aspx
 

Ho fatto una cosa di questo tipo:
 
Compilatore MinGW.
#include <windows.h>
#include <Commdlg.h>
 
OPENFILENAME ofn;
char FileName[1024]="Ciao.txt";
 
 ofn.lpstrFile = FileName;
 
 
GetOpenFileNameA(&ofn);
 
SearchFile.o:SearchFile.c:(.text+0x8a): undefined reference to
`GetOpenFileNameA
@4'
collect2: ld returned 1 exit status
GetOpenFileName
 
Ho tolto la A dal nome della funzi�ne:GetOpenFileName
 
 ma compare lo stesso err�re.
 
SearchFile.o:SearchFile.c:(.text+0x8a): undefined reference to
`GetOpenFileNameA
@4'
collect2: ld returned 1 exit status
 
 
Ciao
 
 
 
 
 
 
 

Ho aggiunto sulla riga di comando del file.bat quando compilo:
-LC:\MinGW\mingw32\lib -lconio -LC:\MinGW\lib -lcomdlg32
 
 
 
conio lo avevo gi�, ma il secondo non funziona!
 
 
 
Ciao
 
 

 collect2: ld returned 1 exit status
 
Se usi MinGW devi linkare la libreria libcomdlg32.a, da quanto leggo in 
rete (io non uso MinGW) dovresti aggiungere -lcomdlg32 alla riga di comando.

 comando.
 
E quello che avevo fatto, ma compare questo errore.
 
G:\...\ SearchFile>REM -LC:\MinGW\lib -lcomdlg32   -lcomdlg32
 
 
G:\...\...\SearchFile>libcomdlg32.a
"libcomdlg32.a" non � riconosciuto come comando interno o esterno,
 un programma eseguibile o un file batch.
 
 
Ciao
 
 

   un programma eseguibile o un file batch.
 
Anche questa riga non serve, toglila.
 
PS: se vuoi tagliare la testa al toro, lascia perdere gcc/mingw e passa 
a Visual C++, la versione Express e' gratuita, la trovi a questi indirizzi:
 
Link diretto al download di Visual Studio 2012 Express per Windows 
Desktop - in Italiano:
http://go.microsoft.com/?linkid=9816771
 
 
Pagina dei prodotti Visual Studio 2012 Express:
http://www.microsoft.com/visualstudio/ita/downloads#d-express-windows-desktop
 
 

 
 
Ok, passer� a VisualC++
 
 
Ciao
 
 

 
 
Adesso funziona, sia con GetOpenFile che, GetSaveFileName.
 
Cio�, compare la finestra di OpenFile e SalvaFile con nome.
Ma il file non viene n� creato, n� salvato!
 
Ciao 
 
 

 
 
Gli passo il nome del file, il cui nome compare nella casella di input,
 la cartella dove salvarlo, ma non viene salvato il file.
 
 
Ciao 
 
 


GetSaveFileName non salva il file, ma serve solo per far apparire la 
finestra di selezione del nome del file, cosï¿œ che l'utente possa 
scegliere il nome del file.
A questo punto, hai il nome del file e poi devi essere tu da programma a 
salvarlo nel path di destinazione.
Da MSDN:
If the user specifies a file name and clicks the OK button and the 
function is successful, the return value is nonzero. The buffer pointed 
to by the lpstrFile member of the OPENFILENAME structure contains the 
full path and file name specified by the user.
 
 

   la cartella dove salvarlo, ma non viene salvato il file.
 
Al link che segue trovi un tutorial che fa al caso tuo, e' un esempio di 
come leggere/scrivere file di testo, utilizzando le funzioni dei Common 
Dialogs per scegliere il file:
http://www.winprog.org/tutorial/app_two.html
 
 
NB: il tutorial riporta *solo* un riassunto del programma, se vuoi 
scaricare l'esempio completo vai alla home page 
(
http://www.winprog.org/tutorial/
) e li' trovi il link (il primo 
dall'alto), il file zip contiene i sorgenti di tutti gli esempi del 
sito, quello che ti interessa e' nella cartella app_two. ;-)