Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: konwersja znaków
anonim




Typ: Nie zarejestrowany
konwersja znaków

Mam problem z konwersją znaków, polskich liter.
Potrzebuję zamienić polskie znaki z mazovi na windosowe i odwrotnie. Przejmuję dane w mazovi w postaci pliku tekstowego wczytuję tekst do programu i... tu pojawia się problem ogonków, bo nie ma znaków windosowych, a i odwrotnie pobieram dane np. z excel-a i wyprowadzam je do pliku, tekst zapisywany w pliku powinien już mieć zmienioną postać albo później po wyprowadzeniu danych, cały plik można by automatycznie przekonwertować na mazovie.
Próbowałem przy użyciu worda i jego funkcji zamiany, ale to bez sensu, dlatego, że jest problem z niektórymi znakami. Może ktoś poda mi przykładową formę kodu, zasadę którą należy stosować.

07-09-2004 21:56
  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004


Sub Convert_Maz_Win1250(sSource As String, sTarget As String)
    Dim fSource As Integer
    Dim fTarget As Integer
    Dim nFL As Long
    Dim CX As Long
    Dim sBuff As String * 1
   
    nFL = FileLen(sSource)
   
    fSource = FreeFile
    Open sSource For Binary Access Read As fSource
    fTarget = FreeFile
    Open sTarget For Binary Access Write As fTarget
   
    For CX = 0 To nFL - 1
        Get fSource, , sBuff
        Select Case Asc(sBuff)
            Case 134: sBuff = "ą"
            Case 143: sBuff = "Ą"
            Case 141: sBuff = "ć"
            Case 149: sBuff = "Ć"
            Case 145: sBuff = "ę"
            Case 144: sBuff = "Ę"
            Case 146: sBuff = "ł"
            Case 156: sBuff = "Ł"
            Case 164: sBuff = "ń"
            Case 165: sBuff = "Ń"
            Case 162: sBuff = "ó"
            Case 163: sBuff = "Ó"
            Case 158: sBuff = "ś"
            Case 152: sBuff = "Ś"
            Case 166: sBuff = "ź"
            Case 160: sBuff = "Ź"
            Case 167: sBuff = "Ż"
            Case 161: sBuff = "ż"
        End Select
        Put fTarget, , sBuff
    Next
   
    Close fSource
    Close fTarget
End Sub

Sub Convert_Win1250_Maz(sSource As String, sTarget As String)
    Dim fSource As Integer
    Dim fTarget As Integer
    Dim nFL As Long
    Dim CX As Long
    Dim sBuff As String * 1
   
    nFL = FileLen(sSource)
   
    fSource = FreeFile
    Open sSource For Binary Access Read As fSource
    fTarget = FreeFile
    Open sTarget For Binary Access Write As fTarget
   
    For CX = 0 To nFL - 1
        Get fSource, , sBuff
        Select Case sBuff
            Case "ą": sBuff = Chr(134)
            Case "Ą": sBuff = Chr(143)
            Case "ć": sBuff = Chr(141)
            Case "Ć": sBuff = Chr(149)
            Case "ę": sBuff = Chr(145)
            Case "Ę": sBuff = Chr(144)
            Case "ł": sBuff = Chr(146)
            Case "Ł": sBuff = Chr(156)
            Case "ń": sBuff = Chr(164)
            Case "Ń": sBuff = Chr(165)
            Case "ó": sBuff = Chr(162)
            Case "Ó": sBuff = Chr(163)
            Case "ś": sBuff = Chr(158)
            Case "Ś": sBuff = Chr(152)
            Case "ź": sBuff = Chr(166)
            Case "Ź": sBuff = Chr(160)
            Case "Ż": sBuff = Chr(167)
            Case "ż": sBuff = Chr(161)
        End Select
        Put fTarget, , sBuff
    Next
   
    Close fSource
    Close fTarget
End Sub


Pierwsza procedura konwertuje pliki z Mazovii na Windows-1250, druga w odwrotną stronę.
sSource - nazwa pliku źródłowego. Plik musi istnieć.
sTarget - nazwa pliku docelowego. Plik musi nieistnieć.

Ze względu na brak plików zapisanych w Mazovii - nie miałem jak tego sprawdzić.

Uwaga - kod konwertuje tylko znaki ogonkowe. Reszta znaków pozostaje niezmieniona!

Sorry, ze tak długo, ale już dawno nie używałem Mazovii i musiałem sobie przypomnieć co jaki miało kod.

[Post edytowany dnia 09-09-2004 13:58 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

09-09-2004 13:50
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Test 'do-undo' wypadł pozytywnie, więc jeśli jest błąd, to tylko w doborze kodów znaków.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

09-09-2004 14:14
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
anonim




Typ: Nie zarejestrowany
podziekowanie

Dziękuję Marcin_an - bardzo mi pomogłeś. Dopasowałem do moich potrzeb i zamienia!
Dziękuję za pomoc

12-09-2004 23:14
  
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1