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

Top Page

Reply to this message
Author: anne.guilde@free.fr
Date:  
To: guilde
Subject: 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 ?
>>
>> Bonne soirée,
>>
>> Jérôme
>>
>
> Merci pour tous ces renseignements.
>
> Je vais faire des essais...


J'ai fait des essais

debian stretch

Les paquets suivants ont été installés :
cmake (3.7.2-1)
cmake-data (3.7.2-1)
libuv1 (1.9.1-3)

# cmake .
CMake Error at
/usr/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:138
(message):
Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES
wxWidgets_INCLUDE_DIRS)
Call Stack (most recent call first):
/usr/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:378
(_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.7/Modules/FindwxWidgets.cmake:929
(find_package_handle_standard_args)
CMakeLists.txt:4 (FIND_PACKAGE)


CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as

     cmake_minimum_required(VERSION 3.7)


should be added at the top of the file. The version specified may be
lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.

-- Configuring incomplete, errors occurred!
See also
"/home/anne/sda1/anne/Documents/anne/linux/vvv-1/VVV-1.3-src/src/CMakeFiles/CMakeOutput.log".

----

J'ai ajouté encore 2/3 bricoles.

Les paquets suivants ont été installés :
codeblocks (16.01+dfsg-2+b1)
codeblocks-common (16.01+dfsg-2)
gdb (7.12-6)
libbabeltrace-ctf1 (1.5.1-1)
libbabeltrace1 (1.5.1-1)
libc6-dbg (2.24-11+deb9u1)
libcodeblocks0 (16.01+dfsg-2+b1)
libdw1 (0.168-1)

puis

Les paquets suivants ont été installés :
codeblocks-contrib (16.01+dfsg-2+b1)
gamin (0.1.10-5+b1)
libgamin0 (0.1.10-5+b1)
libwxsmithlib0 (16.01+dfsg-2+b1)
valgrind (1:3.12.0~svn20160714-1+b1)
valgrind-dbg (1:3.12.0~svn20160714-1+b1)
wx-common (3.0.2+dfsg-4)
wx3.0-headers (3.0.2+dfsg-4)

# cmake .
CMake Error at
/usr/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:138
(message):
Could NOT find wxWidgets (missing: wxWidgets_LIBRARIES
wxWidgets_INCLUDE_DIRS)
Call Stack (most recent call first):
/usr/share/cmake-3.7/Modules/FindPackageHandleStandardArgs.cmake:378
(_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.7/Modules/FindwxWidgets.cmake:929
(find_package_handle_standard_args)
CMakeLists.txt:4 (FIND_PACKAGE)


CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as

     cmake_minimum_required(VERSION 3.7)


should be added at the top of the file. The version specified may be
lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.

-- Configuring incomplete, errors occurred!
See also
"/home/anne/sda1/anne/Documents/anne/linux/vvv-1/VVV-1.3-src/src/CMakeFiles/CMakeOutput.log".

----

Pas encore au point la compil

>
> Encore des questions :
>
> avec la commande find, il y a l'option -P et -F
>
>        -P     Ne jamais suivre les liens symboliques, ce qui est le
> comportement par défaut. Quand find analyse ou affiche les informations
> concernant un fichier, et que ce fichier  est un lien symbolique, les
> informations utilisées sont celles qui concernent le lien symbolique
> lui-même (et non le fichier pointé).
>
>        -L     Suivre  les  liens  symboliques. Quand find analyse ou
> affiche les informations concernant un fichier, ce sont celles extraites
> des caractéristiques du fichier vers lequel mène les liens, et non celle
> du lien lui-même (sauf s'il s'agit d'un lien cassé, ou si find est
> incapable d'analyser le fichier vers lequel pointe le lien).
> L'utilisation de  cette  option implique -noleaf qui sera toujours
> active pour les utilisations ultérieures de l'option -P. Si l'option -L
> est active et que find découvre un lien symbolique vers un
> sous-répertoire lors de ses recherches, le sous-répertoire pointé par le
> lien symbolique sera examiné.
>
>               Quand l'option -L est active, le prédicat -type
> correspondra toujours au type du fichier pointé par le lien symbolique
> plutôt que celui du lien lui-même (sauf si  le  lien symbolique est
> cassé). Les prédicats -lname et -ilname renvoient toujours faux lors de
> l'utilisation de -L.
>
> Y-a-t-il ce genre de subtilités en C++?
>
> En C++, dans les sources de vvv où lit-il les répertoires/fichiers avec quoi et comment?
>
> Merci
> Anne
>