Question

J'ai un fichier TXT que j'ai besoin d'importer via une application, mais pour une raison que je dois l'ouvrir dans WordPad d'abord, puis l'enregistrer avant de l'importer. Je suppose que cela a à voir avec les sauts de ligne. Parce que si je l'ouvre dans le bloc-notes d'abord, il n'y a pas de sauts de ligne, mais si je l'ouvre avec WordPad les lignes sont separes.

Quelqu'un sait pourquoi cela se produit et comment je peux éviter d'avoir à ouvrir manuellement un fichier et enregistrez-le avec WordPad? L'application est écrit en VB6 (Aïe!).

Merci pour toute aide

Était-ce utile?

La solution

Ceci est un problème de fin de ligne. Votre code (et bloc-notes) veulent voir de retour chariot (CR) / saut de ligne (LF) paires, ce qui est probablement CR uniquement (Macintosh) ou LF uniquement fichier (Unix). WordPad est plus indulgent, et sur économie est apparemment (ont pas testé) sauver paires CR / LF pour vous.

Vous pouvez modifier votre code dans l'application de rechercher l'une des terminaisons et les traiter facilement: il suffit de cesser de chercher vbCrLf comme une paire et de chercher soit comme la fin de la ligne. Ma propre stratégie consiste à rechercher des CR ou LF et les anéantira tous les caractères CR / LF qui ont suivi:. Cela efface les lignes vides et

Autres conseils

Le fichier a probablement un retour de chariot (CR) ou un caractère saut de ligne (LF) à la fin de chaque ligne.

Dans Windows, vous avez besoin à la fois un caractère CR et LF à la fin de chaque ligne. Cela peut facilement se faire en VB6 en utilisant la vbCRLF constante.

D'un autre côté, si vous êtes une lecture du fichier, vous pouvez déterminer un manque et d'ajouter manuellement dans la lecture du fichier (par exemple, en utilisant la fonction remplacer pour convertir CR en CRLF ou LF en CRLF ).

À moins que ces fichiers sont très grandes et la performance est critique, leur lecture par ligne peut se faire facilement via l'objet ADODB.Stream.

Non seulement gérer cette plusieurs délimiteurs de ligne (Stream.LineSeparator = ADCR, adCRLF ou ADLF), il peut également être utilisé pour traiter des fichiers contenant Unicode (UTF-16), UTF-8, le système ANSI codepage et alternatif " ANSI » encodages pour d'autres endroits.

Par exemple, si vous avez un fichier texte qui contient « ANSI » d'un paramètre régional de langue russe, vous pouvez définir Stream.Charset = « koi8-r » et lire les données avec la traduction correcte en VB6 Unicode (UTF-16):

Dim Stm As ADODB.Stream
Dim Line As String
Dim Counter As Long
Set Stm = New ADODB.Stream
With Stm
    .Open
    .LoadFromFile "russian.txt"
    .Type = adTypeText
    .Charset = "koi8-r"
    .LineSeparator = adLF
    Do Until .EOS
        Line = .ReadText(adReadLine) 'Text is in Unicode now.
        Counter = Counter + 1
    Loop
    .Close
End With

par défaut charset à la valeur « unicode » (UTF-16), mais pour lire ou écrire Stream en ANSI avec la page de code par défaut, vous pouvez le mettre à « ascii » à la place.

HKCR \ MIME \ Database \ Charset contient les valeurs disponibles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top