begin process at 2012 02 09 03:41:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > ECRITURE DE VALEUR EN UTILISANT LES FORMATS D'ÉCRITURE DU FORTRAN

ECRITURE DE VALEUR EN UTILISANT LES FORMATS D'ÉCRITURE DU FORTRAN


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Texte Niveau :Débutant Date de création :15/12/2004 Vu :3 044

Auteur : mmptj

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Ce module à été developpé pour :
-traduire des sources fortran en visual basic
-utiliser les possibilités du formatage fortran que je n'ai pas retrouvé dans la fonction format() à savoir l'affichage des nombres et textes avec une longueur fixe
Ceci permet surtout de créer des fichiers texte avec un alignement vertical des valeurs.

Source

  • Function fFormat(ByVal valeur As Variant, strFormat As String) As String
  • ' mise en forme du type fortran In, In.m, Fn.m, An
  • '
  • ' permet l'écriture d'une valeur avec une longueur fixe
  • '
  • Dim nbCar As Integer, nbDeci As Integer, posPoint As Integer, nbZero As Integer
  • posPoint = InStr(1, strFormat, ".")
  • If posPoint > 0 Then
  • nbCar = Val(Mid(Left(strFormat, posPoint - 1), 2))
  • nbDeci = Val(Mid(strFormat, posPoint + 1))
  • Else
  • nbCar = Val(Mid(strFormat, posPoint + 2))
  • nbDeci = 0
  • End If
  • If Left(strFormat, 1) = "I" Then
  • '--- mise en forme des entiers ---
  • ' 3 possibilités :
  • ' In : chaine de caractères de longueur n tronquée à droite si necessaire
  • ' I : chaine de longueur égale à la longueur de la chaine à mettre en forme
  • '
  • fFormat = Format(valeur, "0")
  • If nbDeci > nbCar Then nbDeci = nbCar
  • If strFormat <> "I" Then
  • If Len(fFormat) > nbCar Then
  • fFormat = String(nbCar, "*")
  • Else
  • If nbDeci > 0 Then
  • nbZero = nbDeci - Len(fFormat)
  • If nbZero < 0 Then nbZero = 0
  • fFormat = String(nbZero, "0") & fFormat
  • End If
  • fFormat = String(nbCar - Len(fFormat), " ") & fFormat
  • End If
  • End If
  • ElseIf Left(strFormat, 1) = "F" Then
  • '--- mise en forme des réels ---
  • fFormat = Format(valeur, "#." & String(nbDeci, "0"))
  • If Len(fFormat) > nbCar Then
  • fFormat = String(nbCar, "*")
  • Else
  • fFormat = String(nbCar - Len(fFormat), " ") & fFormat
  • End If
  • ElseIf Left(strFormat, 1) = "A" Then
  • ' --- mise en forme des textes ---
  • ' 2 possibilités :
  • ' An : chaine de caractères de longueur n tronquée à droite si necessaire
  • ' A : chaine de longueur égale à la longueur de la chaine à mettre en forme
  • '
  • If strFormat <> "A" Then
  • If Len(valeur) > nbCar Then
  • 'chaine de longueur > longueur d'écriture autorisée -> troncation
  • fFormat = Left(valeur, nbCar)
  • Else
  • 'ajout de blancs pour atteindre la longueur voulue
  • fFormat = valeur & String(nbCar - Len(valeur), " ")
  • End If
  • Else
  • fFormat = valeur
  • End If
  • ElseIf Right(strFormat, 1) = "X" Then
  • ' --- mise en forme d'espaces ---
  • ' nX : chaine composée de n espaces
  • fFormat = String(Val(Left(strFormat, Len(strFormat) - 1)), " ")
  • Else
  • fFormat = ""
  • End If
  • End Function
Function fFormat(ByVal valeur As Variant, strFormat As String) As String
' mise en forme du type fortran In, In.m, Fn.m, An
'
' permet l'écriture d'une valeur avec une longueur fixe
'
Dim nbCar As Integer, nbDeci As Integer, posPoint As Integer, nbZero As Integer

posPoint = InStr(1, strFormat, ".")
If posPoint > 0 Then
   nbCar = Val(Mid(Left(strFormat, posPoint - 1), 2))
   nbDeci = Val(Mid(strFormat, posPoint + 1))
Else
   nbCar = Val(Mid(strFormat, posPoint + 2))
   nbDeci = 0
End If
If Left(strFormat, 1) = "I" Then
   '--- mise en forme des entiers ---
'   3 possibilités :
'   In : chaine de caractères de longueur n tronquée à droite si necessaire
'   I  : chaine de longueur égale à la longueur de la chaine à mettre en forme
'
   fFormat = Format(valeur, "0")
   If nbDeci > nbCar Then nbDeci = nbCar
   If strFormat <> "I" Then
      If Len(fFormat) > nbCar Then
         fFormat = String(nbCar, "*")
      Else
         If nbDeci > 0 Then
            nbZero = nbDeci - Len(fFormat)
            If nbZero < 0 Then nbZero = 0
            fFormat = String(nbZero, "0") & fFormat
         End If
         fFormat = String(nbCar - Len(fFormat), " ") & fFormat
      End If
   End If
ElseIf Left(strFormat, 1) = "F" Then
   '--- mise en forme des réels ---
   fFormat = Format(valeur, "#." & String(nbDeci, "0"))
   If Len(fFormat) > nbCar Then
      fFormat = String(nbCar, "*")
   Else
      fFormat = String(nbCar - Len(fFormat), " ") & fFormat
   End If
ElseIf Left(strFormat, 1) = "A" Then
'   --- mise en forme des textes ---
'   2 possibilités :
'   An : chaine de caractères de longueur n tronquée à droite si necessaire
'   A  : chaine de longueur égale à la longueur de la chaine à mettre en forme
'
   If strFormat <> "A" Then
      If Len(valeur) > nbCar Then
         'chaine de longueur > longueur d'écriture autorisée -> troncation
         fFormat = Left(valeur, nbCar)
      Else
         'ajout de blancs pour atteindre la longueur voulue
         fFormat = valeur & String(nbCar - Len(valeur), " ")
      End If
   Else
      fFormat = valeur
   End If
ElseIf Right(strFormat, 1) = "X" Then
'   --- mise en forme d'espaces ---
'   nX : chaine composée de n espaces
   fFormat = String(Val(Left(strFormat, Len(strFormat) - 1)), " ")
Else
   fFormat = ""
End If
End Function

 Conclusion

en espérant que cela aidera quelqu'un


exemple:  ":" & fFormat(11.25,"F6.2") & ":" --> : 11.25:
                 ":" & fFormat(12,"I6.6") & ":" -->:000012:
                 ":" & fFormat(12,"I6") & ":" -->:    12:


 Sources de la même categorie

Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima
Source avec Zip Source avec une capture PERSONNALISEZ VOS BOÎTES DE MESSAGE (X)HTML par medjahedScript

Commentaires et avis

Commentaire de crenaud76 le 15/12/2004 16:55:29

Et si je te dit que en VB, Format("123","@@@@@") retourne "..123" (j'ai mis des points à la place des espaces, pour plus de compréhension) .... est-ce que cela t'aide ??

Commentaire de mmptj le 15/12/2004 17:04:04

cela fonctionne bien pour les chaines de caractères, as tu une solution pour les expressions numériques ?

Commentaire de JoePatent le 15/12/2004 17:20:04

voici des exemples du help de vb6

MyStr = Format(5459.4, "##,##0.00")   ' Returns "5,459.40".
MyStr = Format(334.9, "###0.00")   ' Returns "334.90".
MyStr = Format(5, "0.00%")   ' Returns "500.00%".

Dans le pire des cas, si tu veux les memes possibilité qu'avec les chaines de caractères tu convertit ton numerique dans le passage du parametre.

format (trim$(str$(numeric)),"@@@@@")

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,370 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales