PB avec subsstring

Résolu
avatar69 Messages postés 8 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 12 octobre 2009 - 19 juin 2009 à 09:39
avatar69 Messages postés 8 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 12 octobre 2009 - 19 juin 2009 à 19:13
Bonjour,
je suis programmeur en PHP, PERL et je dois modifier un prog fait par un collegue en C# et la ca me fait tourner la tete !!!!!

J'ai la fonction substrings qui ne marche pas ca me fait une erreur suivante

Erreur 1 'object' ne contient pas une définition pour 'Substring' et aucune méthode d'extension 'Substring' acceptant un premier argument de type 'object' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) C:\Documents and Settings\Administrateur\Mes documents\Visual Studio 2008\Projects\FeelImpClients\FeelImpClients\Form1.cs 63 39 FeelImpClients

J'ai besoin de faire du LEFT et du RIGHT sinon, quel est la meilleur solution ?
j'ai pas l'impression qu'on puisse faire du RIGHT avec substring mais que du LEFT ?

Voici mon script

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.IO;


namespace FeelImpClients
{
    public partial class Form1 : Form
    {
        string strAppPath = Directory.GetCurrentDirectory();
       
        public Form1()
        {
            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {
          
        }


        private void button2_Click(object sender, EventArgs e)
        {


            string sqlstr;
            SqlDataReader rdr;
            // Ouverture de la connection SQL


            //string connectString = "database=FEELMUSIC;server=192.168.150.2;User ID=SageUpdate;pwd=bigchief";
            string connectString = "database=DISTRINEP;server=192.168.100.118;User ID=;pwd=jpac";
            // Objet connection
            SqlConnection connection = new SqlConnection(connectString);
            // Ouverture
            connection.Open();




                sqlstr = "select * from F_COMPTET";
                SqlCommand oCmd2 = new SqlCommand(sqlstr, connection);
                rdr = oCmd2.ExecuteReader();


                Console.WriteLine("Répertoire d'exécution : " + Environment.CurrentDirectory);
                FileStream fchSortie = new FileStream("EXPORT CLIENT VB.TXT", FileMode.Create);
                StreamWriter flux = new StreamWriter(fchSortie, ASCIIEncoding.Default);
                Object[] row = null;
               
                while (rdr.Read())
                {
                    row = new Object[rdr.FieldCount];
                    rdr.GetValues(row);
                    row[96] = "             " + row[96];
                    row[96] = row[96].Substring(2, 5);
                    flux.Write(row[96]);
                    flux.Write(";");
                    flux.WriteLine();
                    // Console.WriteLine("ca avance !!!");
                }


                rdr.Close();


        }
   }
}


Merci pour votre aide
Thierry

5 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
19 juin 2009 à 09:58
Bonjour,


Substring est une méthode de String donc row[96] étant de type Object il est normal que le compilateur te donne une erreur quand tu fais row[96].substring(2,5)


Left : str.Substring(0,5); // 5 premiers caractères
Right : str.Substring(str.Length - 5,5); // 5 dernier caractères


 
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
19 juin 2009 à 10:20
L'erreur me semble parler d'elle-même. Comme le dit ed73, la méthode Substring n'existe pas pour un object (et encore heureux, car toute classe hérite de object, et j'imagine mal ce que serait censé faire un code du genre "maVoiture.Substring()").

De plus, quand Intellisense (le système de saisie semi-automatique de Visual Studio) te propose une liste qui ne contient pas ce que tu cherches, tu as 99% de chances que ce ne soit pas valide de l'écrire.

Substring n'existe que dans la classe string. Donc il faut d'abord récupérer un string.

3 méthodes :
Si c'est un objet non null de n'importe quelle classe, tu peux faire monObjet.ToString();
Si c'est réellement un string, tu peux faire (string)monObjet. Si monObjet n'est pas un string => Exception
Tu peux également faire monObjet as string. Si monObjet n'est pas un string, ça renverra null.

Donc dans ton code : row[96].ToString().Substring(2, 5);

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
3
avatar69 Messages postés 8 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 12 octobre 2009
19 juin 2009 à 15:25
Merci pour vos réponses ca ma permi d'avancé un peu.
Mais la logique est completement differente de ce que j'ai l'habitude de f aire..... je m'en voie un peu pour un script qui aurais du me prendre meme pas 10 minutes..

Merci
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
19 juin 2009 à 15:45
Logique complètement différente ??

Tu fais du PHP non ?
$monObjet.MaMethodeQuiNExistePasPourLaClasseDeMonObjet();
ça te génère pas une erreur (par hasard) ?

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avatar69 Messages postés 8 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 12 octobre 2009
19 juin 2009 à 19:13
Non ca j'ai jamais fait en PHP, je programme en PHP3 ca sa doit etre du PHP5

++

Thierry
0
Rejoignez-nous