Scilab, fonction mopen

Bazoukka Messages postés 8 Statut Membre -  
Bazoukka Messages postés 8 Statut Membre -
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
Configuration: Windows XP Internet Explorer 6.0

2 réponses

  1. Bazoukka Messages postés 8 Statut Membre
     
    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
  2. Bazoukka Messages postés 8 Statut Membre
     
    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