Re: lignes d'un fichier en C ou C++

Page principale

Répondre à ce message
Auteur: anne.guilde@free.fr
Date:  
À: guilde
Sujet: Re: lignes d'un fichier en C ou C++
Le 02/04/2018 à 20:02, anne.guilde@??? a écrit :
> Le 02/04/2018 à 18:41, Jérôme Villafruela a écrit :
>> Le 01/04/2018 à 17:01, anne.guilde@??? a écrit :
>>> Le 01/04/2018 à 13:14, anne.guilde@??? a écrit :
>>>> bonjour,
>>>>
>>>> j'ai le message suivant
>>>> ----
>>>> 10:43:06: Échec de la récupération de la date du fichier
>>>> « /media/anne/e63b0852-e3c8-4690-b779-28a6f785210c/initrd.img »
>>>> (erreur 2 : Aucun fichier ou dossier de ce type)
>>>> 10:43:06: Une erreur inattendue est intervenue. En voici la
>>>> description :
>>>>
>>>> *** IBPP::SQLException ***
>>>> Context: Statement::Execute( INSERT INTO FILES (FILE_ID, FILE_NAME,
>>>> FILE_EXT, FILE_SIZE, FILE_DATETIME, PATH_FILE_ID, PATH_ID,
>>>> FILE_DESCRIPTION) VALUES (941562, 'initrd.img', 'img', 0,
>>>> '292278994-08-16 17:47:04', NULL, 70288, NULL) )
>>>> Message: isc_dsql_execute2 failed
>>>>
>>>> SQL Message : -413
>>>> Overflow occurred during data type conversion.
>>>>
>>>> Engine Code    : 335544334
>>>> Engine Message :
>>>> conversion error from string "292278994-08-16 17:47:04"
>>>> ----
>>>>
>>>> Pourquoi cette date "292278994-08-16 17:47:04"?
>>>>
>>>> La date de ce fichier est
>>>>
>>>> lrwxrwxrwx    1 root root    29 juin  21  2017 initrd.img ->
>>>> boot/initrd.img-4.9.0-3-amd64
>>>> => 21 juin 2017
>>>>
>>
>> J'ai reproduit le problème avec exactement le même message, dans mon
>> cas le fichier causant le problème est un lien symbolique dont la
>> cible n'est pas accessible (sur une partition non montée) , est ce
>> aussi le cas ici ?
>>
>>
>
> C'est tout à fait cela.
> Tu as aussi la date  "292278994-08-16 17:47:04"?
>
>
>>>> J'ai le source des programmes.
>>>>
>>>> J'ai fait une recherche avec grep sur FILE_DATETIME
>>>> ----
>>>> # grep -ir 'FILE_DATETIME' ../vvv/VVV-1.3-src/
>>>> Fichier binaire ../vvv/VVV-1.3-src/VVV.fbk correspondant
>>>> ../vvv/VVV-1.3-src/src/data_interface/fb_virtual_files.cpp:
>>>> FB_st->Get("FILE_DATETIME", ts);
>>>> ../vvv/VVV-1.3-src/src/data_interface/fb_files.cpp:    sql +=
>>>> wxT("FILE_NAME, FILE_EXT, FILE_SIZE, FILE_DATETIME, PATH_FILE_ID,
>>>> PATH_ID, FILE_DESCRIPTION) VALUES (");
>>>> ../vvv/VVV-1.3-src/src/data_interface/fb_files.cpp:    sql +=
>>>> wxT("FILE_DATETIME = ") + DateTime.Format( wxT("'%Y-%m-%d
>>>> %H:%M:%S'") ) + wxT(", ") +
>>>> ../vvv/VVV-1.3-src/src/data_interface/fb_files.cpp:
>>>> FB_st->Get("FILE_DATETIME", ts);
>>>> ../vvv/VVV-1.3-src/src/data_interface/fb_files.cpp:    sql =
>>>> wxT("UPDATE FILES SET FILE_DATETIME = ") + fdt.Format(
>>>> wxT("'%Y-%m-%d %H:%M:%S'") ) + wxT(", ");
>>>> ../vvv/VVV-1.3-src/src/data_interface/virtual_files.cpp: wxString
>>>> sql = wxT("select virtual_files.file_id,
>>>> virtual_files.virtual_path_id, virtual_files.physical_file_id,
>>>> virtual_files.virtual_path_file_id, files.file_name,
>>>> files.file_size, files.file_ext, files.file_datetime, files.path_id,
>>>> files.path_file_id, files.file_description ");
>>>> ../vvv/VVV-1.3-src/src/convert_db_unicode.cpp:
>>>> stIn->Get("FILE_DATETIME", ts);
>>>> ../vvv/VVV-1.3-src/src/convert_db_unicode.cpp:        sql +=
>>>> wxT("FILE_NAME, FILE_EXT, FILE_SIZE, FILE_DATETIME, PATH_FILE_ID,
>>>> PATH_ID, FILE_DESCRIPTION) VALUES (");
>>>> ../vvv/VVV-1.3-src/VVV.sql:    FILE_DATETIME     TIMESTAMP,
>>>> ../vvv/VVV-1.3-src/VVV.sql:                insert into FILES(
>>>> FILE_ID, FILE_NAME, FILE_SIZE, FILE_EXT, FILE_DATETIME, PATH_ID )
>>>> ----
>>>>
>>>> J'ai une recherche dans ce fichier
>>>> /vvv/VVV-1.3-src/src/data_interface/fb_files.cpp:
>>>> ...
>>>>          FB_st->Get("FILE_DATETIME", ts);
>>>>
>>>>          DateTime.Set( ts.Day(), (wxDateTime::Month)
>>>> (wxDateTime::Jan + ts.Month() - 1), ts.Year(), ts.Hours(),
>>>> ts.Minutes(),  ts.Seconds() );
>>>> ...
>>>>
>>>> Je ne comprends pas vraiment cette syntaxe.
>>>>
>>>> Si quelqu'un pouvait me décortiquer
>>>>
>>>
>>
>> DateTime est un objet de type wxDateTime (de la bibliothèque
>> wxWidgets, défini dans la classe CFiles, source files.h )  dont on
>> appelle la métode Set
>> (http://docs.wxwidgets.org/stable/classwx_date_time.html#a6f7ee89e55144c61ac19a6543e67db6a
>> )
>>
>>
>>> suite de mes questions
>>>
>>> - Comment faire pour faire du pas à pas (mode debug)?
>>> Il faut recompiler?
>>> Si oui, comment et quel paquet installer?
>>
>> L'outil de build utilisé est CMake, il faut installer :
>>
>> apt install build-essentials
>> apt install cmake
>>
>> Pour lancer le build :
>>
>> cd VVV-1.3-src/src
>> cmake .
>>
>> Mais chez moi le build échoue car il manque des dépendances, je ne
>> connais pas CMake, y a t'il moyen de récupérer automatiquement la
>> liste des dépendances ?
>> Dans CMakeLists.txt Il y  a une ligne :
>>
>> FIND_PACKAGE(wxWidgets REQUIRED html adv core base net aui xrc qa
>> richtext )
>>
>> comment se fait le lien avec le nom des paquets ?
>>


on m'a donné la solution, faut mettre les paquets dev.

maintenant dans CMakeCache.txt
FIND_PACKAGE_MESSAGE_DETAILS_wxWidgets:INTERNAL=[-L/usr/lib/x86_64-linux-gnu;-pthread;;;-lwx_gtk2u_html-3.0;-lwx_gtk2u_adv-3.0;-lwx_gtk2u_core-3.0;-lwx_baseu-3.0;-lwx_baseu_net-3.0;-lwx_gtk2u_aui-3.0;-lwx_gtk2u_xrc-3.0;-lwx_gtk2u_qa-3.0;-lwx_gtk2u_richtext-3.0][/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0;/usr/include/wx-3.0][v3.0.2()]

Mais problème suivant

find_path( TAGLIB_INCLUDE_PATH tag.h DOC "Path to TagLib header files" )
...
find_library( TAGLIB_LIB libtag.a PATHS /usr/lib /usr/local/lib )

if( NOT TAGLIB_LIB )

     message( FATAL_ERROR "Unable to find TagLib" )


else( NOT TAGLIB_LIB )

     message( STATUS "TagLib: " ${TAGLIB_LIB} )


endif( NOT TAGLIB_LIB )

le locate a trouvé /usr/include/taglib/tag.h
mais pas de libtag.a

Anne