Scilab, fonction mopen

Fermé
Bazoukka Messages postés 7 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 4 août 2009 - 10 juil. 2009 à 10:14
Bazoukka Messages postés 7 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 4 août 2009 - 15 juil. 2009 à 15:41
Bonjour,

Je dois réaliser un programme Scilab qui doit me permettre d'utiliser les données d'un fichier .txt.
Les premières lignes (commentées, chaîne de caractères) sont associées à une variable 'Grandeurs' et les données numériques (matrice 20*100, voire plus!) à une variables 'Mesures'.

Mon programme est :

//Initialisation
fname1=fname;
ext1=ext;
chemin=' ';

[fpath, fname, ext]=open_text(chemin, '*.txt', 'Fichier Brut *.txt');

name1=fpath+'\'+fname+ext
//name2=string(fullfile(fpath,fname+ext))
//name3=fullfile(fpath,fname+ext)
name4='D:\Documents\bauda\Données\Données_Analogic.txt'

//ofname=mopen(fname+ext,'r');
ofname=mopen(name3,'r');

if ~isempty(name3)
Gr=mgetl(ofname);
[nl,nc]=size(Gr);
grandeurs=Gr(1,:)

end
mclose(name3);

Mon probléme est que la seule maniére de le faire marcher correctement est avec 'name4' alors que je souhaite éxécuter ce fichier en relation avec un autre.
Il ne faut donc pas que je rentre explicitement un chaîne avec le chemin absolu de mon fichier à lire.

Merci d'avance de votre aide.

Bazoukka

2 réponses

Bazoukka Messages postés 7 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 4 août 2009
10 juil. 2009 à 12:44
La fonction open_text() est peut-être utile, la voila donc:

// [fpath, fname, ext]=open_text(chemin, titre, specf)
// chemin : default acces
// specf : extension's file
//
// fpath : path's file
// fname : name's file
// ext : extension's file
//

function [fpath, fname, ext]=open_text(chemin, specf, titre)
rhs=argn(2);

if rhs<2
specf='*.txt';
chemin='';
end
if rhs<3
titre='Chercher un fichier';
end
// if rhs<3
// titre='Fichier_essai';
//
// end

[fname2, fpath2]=uigetfile(specf,chemin,titre,%t)
if ~isempty(fname2)
fpath=fpath2;
wh=strindex(fname2,'.');
if isempty(wh)
wh=length(fname2)+1;
end
fname=part(fname2, 1:wh-1);
ext=part(fname2, wh:length(fname2));
else
fname=[];
ext=[];
end
// nom=fpath+'\'+fname+ext
endfunction

Donner moi des pistes svp.
0
Bazoukka Messages postés 7 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 4 août 2009
15 juil. 2009 à 15:41
Pb résolu,
j'avais un caractére spéciale (ie é) des le chemin que je concaténais!!
il n'aime pas ca du tout!
pour débugger, j'ai regardé la longueur de mes deux chaine qui semblaient identiques, puis j'ai regardé le code ASCII de chacune d'elles.
voili, voila.
0