Instr en c# ne Fonctionne pas
Résolu
danmor
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
danmor Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
danmor Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
si une personne peut m'aider serais aprécié
Jutilise ceci en vb.net mais ne fontionee pas en c# ca je sais a cause ce instr()
voici le probleme en entier
Public Sub WriteDate(ByVal start_at As Integer)
Dim pos As Integer
Dim target As String
target = Format(DateString, "Long date")
pos = InStr(start_at, Rtxt.Text, target)
If pos <> 0 Then
TargetPosition = pos
Rtxt.SelectionStart = TargetPosition - 1
Rtxt.SelectionStart = Len(Rtxt.Text)
Rtxt.Modified = False
Rtxt.Focus()
Exit Sub
Else
Rtxt.SelectionStart = Len(Rtxt.Text)
Rtxt.SelectedText = vbCrLf
Rtxt.SelectedText = vbCrLf
Rtxt.SelectionFont = New Font(Font.Name, 10, FontStyle.Bold)
Rtxt.SelectedText = Format(DateString, "Long date")
Rtxt.SelectionFont = New Font(Font.Name, Font.Size, FontStyle.Regular)
Rtxt.SelectedText = vbCrLf
Rtxt.SelectedText = vbCrLf
Rtxt.SelectionStart = Len(Rtxt.Text)
Rtxt.Focus()
End If
End Sub
Jai refait en c# de cette facon
public void WriteDate(int start_at)
{
int pos;
string target;
target = DateTime.Now.ToString("dddd, dd MMM yyyy");
pos = InStr(start_at, Rtxt.Text, target); // Le probleme est ici
if (pos != 0)
{
TargetPosition = pos;
Rtxt.SelectionStart = TargetPosition - 1;
Rtxt.SelectionStart = Rtxt.TextLength;
Rtxt.Modified = false;
Rtxt.Focus();
return;
}
else
{
Rtxt.SelectionStart = Rtxt.TextLength;
Rtxt.SelectedText ="\r\n";
Rtxt.SelectedText = "\r\n";
Rtxt.SelectionFont = new Font(Font.Name, 10, FontStyle.Bold);
Rtxt.SelectedText = DateTime.Now.ToString("dddd, dd MMM yyyy");
Rtxt.SelectionFont = new Font(Font.Name, Font.Size, FontStyle.Regular);
Rtxt.SelectedText ="\r\n";;
Rtxt.SelectedText ="\r\n";;
Rtxt.SelectionStart = Rtxt.TextLength;
Rtxt.Focus();
}
}
vc# 2008
Merci de votre aide
DanMor
si une personne peut m'aider serais aprécié
Jutilise ceci en vb.net mais ne fontionee pas en c# ca je sais a cause ce instr()
voici le probleme en entier
Public Sub WriteDate(ByVal start_at As Integer)
Dim pos As Integer
Dim target As String
target = Format(DateString, "Long date")
pos = InStr(start_at, Rtxt.Text, target)
If pos <> 0 Then
TargetPosition = pos
Rtxt.SelectionStart = TargetPosition - 1
Rtxt.SelectionStart = Len(Rtxt.Text)
Rtxt.Modified = False
Rtxt.Focus()
Exit Sub
Else
Rtxt.SelectionStart = Len(Rtxt.Text)
Rtxt.SelectedText = vbCrLf
Rtxt.SelectedText = vbCrLf
Rtxt.SelectionFont = New Font(Font.Name, 10, FontStyle.Bold)
Rtxt.SelectedText = Format(DateString, "Long date")
Rtxt.SelectionFont = New Font(Font.Name, Font.Size, FontStyle.Regular)
Rtxt.SelectedText = vbCrLf
Rtxt.SelectedText = vbCrLf
Rtxt.SelectionStart = Len(Rtxt.Text)
Rtxt.Focus()
End If
End Sub
Jai refait en c# de cette facon
public void WriteDate(int start_at)
{
int pos;
string target;
target = DateTime.Now.ToString("dddd, dd MMM yyyy");
pos = InStr(start_at, Rtxt.Text, target); // Le probleme est ici
if (pos != 0)
{
TargetPosition = pos;
Rtxt.SelectionStart = TargetPosition - 1;
Rtxt.SelectionStart = Rtxt.TextLength;
Rtxt.Modified = false;
Rtxt.Focus();
return;
}
else
{
Rtxt.SelectionStart = Rtxt.TextLength;
Rtxt.SelectedText ="\r\n";
Rtxt.SelectedText = "\r\n";
Rtxt.SelectionFont = new Font(Font.Name, 10, FontStyle.Bold);
Rtxt.SelectedText = DateTime.Now.ToString("dddd, dd MMM yyyy");
Rtxt.SelectionFont = new Font(Font.Name, Font.Size, FontStyle.Regular);
Rtxt.SelectedText ="\r\n";;
Rtxt.SelectedText ="\r\n";;
Rtxt.SelectionStart = Rtxt.TextLength;
Rtxt.Focus();
}
}
vc# 2008
Merci de votre aide
DanMor
2 réponses
Bonjour,
Excuses-moi, je pensais qu'on pouvait facilement transposer.
Voici la fonction Inst en C#
Excuses-moi, je pensais qu'on pouvait facilement transposer.
Voici la fonction Inst en C#
/**************************************************************** * Fonction int Instr(chaine,sous_chaine) * exemples d'utilisation ****************************************************************/ using System; class Test { static void Main() { int i; string txt1="0123456789"; string txt2 ="01234567891"; i=Test.Instr(txt1,txt2); Console.WriteLine(String.Concat("Chaine = ",txt1)); Console.WriteLine(String.Concat("Sous-Chaine = ", txt2)); Console.Write("Position de la Sous-Chaine : "); Console.WriteLine(i);/*affiche -1*/ txt2="0"; i=Test.Instr(txt1,txt2); Console.WriteLine(String.Concat("Sous-Chaine = ", txt2)); Console.Write("Position de la Sous-Chaine : "); Console.WriteLine(i);/*affiche 0*/ txt2="9"; i=Test.Instr(txt1,txt2); Console.WriteLine(String.Concat("Sous-Chaine =", txt2)); Console.Write("Position de la Sous-Chaine : "); Console.WriteLine(i);/*affiche 9*/ txt2="567"; i=Test.Instr(txt1,txt2); Console.WriteLine(String.Concat("Sous-Chaine = ", txt2)); Console.Write("Position de la Sous-Chaine : "); Console.WriteLine(i);/*affiche 5*/ txt2=""; i=Test.Instr(txt1,txt2); Console.WriteLine(String.Concat("Sous-Chaine = ", txt2)); Console.Write("Position de la Sous-Chaine : "); Console.WriteLine(i);/*affiche -1*/ txt1="A ZER TYUIOPA ZET YUI ZET OP"; txt2="ZET"; i=Test.Instr(txt1,txt2); Console.WriteLine(String.Concat("Chaine = ",txt1)); Console.WriteLine(String.Concat("Sous-Chaine = ", txt2)); Console.Write("Position de la Sous-Chaine : "); Console.WriteLine(i);/*affiche 14*/ txt1=Console.ReadLine(); } /**************************************************************** * Fonction int Instr(chaine,sous_chaine) * si chaine="" ou sous_chaine="" retourne -1 * si length(sous_chaine) > length(chaine) retourne -1 * * si sous_chaine est dans chaine retourne position 1er caractère * a partir de 0 * sinon retourne -1 * * exemples d'utilisation ****************************************************************/ static int Instr(string chaine , string sous_chaine) { int l = chaine.Length; int m = sous_chaine.Length; int n = -1; int i; int j; char c1; char c2; if ((m > l) || (m == 0) || (l == 0)) return n; j = 0; while (j<l) { i=0; c2=sous_chaine[0]; c1=chaine[j]; if (c1==c2) { while ((i<m) && (j<l)) { i = i+1; j = j+1; if ((j<l) && (i<m)) {c1=chaine[j]; c2=sous_chaine[i];} if (c1!=c2) break; } } if ( i == m) { n = j-m; return n; } j=j+1; } return n; } /****************************************************************/ }
Bonjour,
Voici l'equivalent de la fonction instr en C avec un exemple d'utilisation
contrairement a VB la numérotaion des caractères commence à 0 et non à 1.
Voici l'equivalent de la fonction instr en C avec un exemple d'utilisation
contrairement a VB la numérotaion des caractères commence à 0 et non à 1.
#include <stdio.h> #include <stdlib.h> int instr(); int main(){ int i; char txt[11]; strcpy(txt,"0123456789"); i=instr(txt,"5"); printf("position de la sous-chaine %i \n",i);/*affiche 5*/ strcpy(txt,"AZERTYUIOP"); i=instr(txt,"x"); printf("position de la sous-chaine %i \n",i);/*affiche -1*/ getch(); return 0; } /*si sous_chaine est dans chaine, retourne position 1er caratère de sous_chaine a partir de 0, sinon retourne -1*/ int instr (chaine , sous_chaine) char *chaine; char *sous_chaine; { int l , m , n ,i ,j ; l = strlen(chaine); m = strlen(sous_chaine); n = -1; if ((m > l) || (m == 0) || (l == 0)) return(n); j = -1; while (j<l) { i = 0; j = j+1; while ((sous_chaine[i]==chaine[j]) && (i<m) && (j<l)) { i = i+1; j = j+1; } if ( i == m) { n = j-m; return(n); } } return(n); }
encore merci
danmor