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 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
>>
>
> suite de mes questions
>
> - Comment faire pour faire du pas à pas (mode debug)?
> Il faut recompiler?
> Si oui, comment et quel paquet installer?
>
> - C'est du c++ si j'ai bien vu
> Le source se trouve ici
> https://sourceforge.net/projects/vvvapp/files/VVV/1.3/
>
> J'ai fait des recherches avec ' sql ' dans VVV-1.3-src.
> J'en suis arrivée qu'il faut que je modifie dans
> VVV-1.3-src/src/data_interface/fb_files.cpp.
>
> Il faudrait tester FILE_DATETIME avant de faire le sql.
> Mais comment faire cela en c++
>
suite
le programme que je veux modifier
https://pastebin.com/iCvf2yr2
il faut tester la date
void CFiles::FB_FetchRow(void) {
...
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() );
...
Si quelqu'un peut jeter un oeil
merci
Anne