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

Top Page

Reply to this message
Author: Jérôme Villafruela
Date:  
To: guilde
Subject: Re: lignes d'un fichier en C ou C++
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 ?


>> 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 ?

Bonne soirée,

Jérôme