Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Ένα μικρό utility για μετατροπή κειμένου σέ DOS Format από Windows και αντίστροφα

Îåêßíçóå áðü ôï ìÝëïò imanos. Τελευταία δημοσίευση από το μέλος imanos στις 05-02-2006, 22:23. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-02-2006, 10:16 9255

    Ένα μικρό utility για μετατροπή κειμένου σέ DOS Format από Windows και αντίστροφα

    Συνημμένα: MAPFILES.zip

    Καταρχή από VS6 δημιουργούμε ένα ACTIVEX DLL PROJECT.

    To project αυτό θά περιέχει μία κλάση την Clselot και μέσα στην κλάση τις δύο παρακάτω Function οι οποίες δέχονται ένα string για παράμετρο.



    'Μετατροπή Windows 928 σε Dos 737

    Public Function ElotToDOS(MyString As String) As String
     Dim elot(1 To 61), dos(1 To 62)
     Dim i As Long, k As Long
     Dim temp As String
     Open App.Path & "\bin\WinGreek" For Input As #1
      Do While Not EOF(1)
        elot(i + 1) = Input(1, #1)
        i = i + 1
      Loop
       i = 0
     Open App.Path & "\bin\DosGreek" For Input As #2
      Do While Not EOF(2)
        dos(i + 1) = Input(1, #2)
        i = i + 1
      Loop
        dos(62) = "?"
      Close #1
      Close #2
    For i = 1 To Len(MyString)
        k = 1
        If Asc(Mid(MyString, i, 1)) >= 128 Then
           Do While Mid(MyString, i, 1) <> elot(k)

             k = k + 1
             If k > 61 Then
               Exit Do
             End If
           Loop
             temp = temp + dos(k)
          Else
           temp = temp + Mid(MyString, i, 1)
         End If

    Next
      ElotToDOS = temp
    End Function

    'Μετατροπή  Dos 737 σε Windows 928

    Public Function ElotToWIN(MyString As String) As String
     Dim elot(1 To 62), dos(1 To 62)
     Dim i As Long, k As Long
     Dim temp As String
     Open App.Path & "\bin\WinGreek" For Input As #1
      Do While Not EOF(1)
        elot(i + 1) = Input(1, #1)
        i = i + 1
      Loop
       i = 0
     Open App.Path & "\bin\DosGreek" For Input As #2
       
      Do While Not EOF(2)
        dos(i + 1) = Input(1, #2)
        i = i + 1
      Loop
        dos(62) = "?"

      Close #1
      Close #2

    For i = 1 To Len(MyString)
        k = 1
        If Asc(Mid(MyString, i, 1)) >= 128 Then
          Debug.Print Asc(Mid(MyString, i, 1))
           Do While Mid(MyString, i, 1) <> dos(k)

             k = k + 1
             If k > 61 Then
               Exit Do
             End If
           Loop
             temp = temp + elot(k)
          Else

           temp = temp + Mid(MyString, i, 1)
          
         End If

    Next
      ElotToWIN= temp

    End Function

    Επισύνάπτω και το zip File με τα αρχεία WinGreek και DosGreek που ουσιαστικά είναι ένα map των χαρακτήρων για Windows και Dos τά οποία τοποθετούνται σέ ένα φάκελο μέ την ονομασία Bin στο Directory το οποίο έχουμε δημιουργήσει το DLL μας.

     


    Ιωάννης Μανουσάκης
  •  05-02-2006, 14:40 9257 σε απάντηση της 9255

    Απ: Ένα μικρό utility για μετατροπή κειμένου σέ DOS Format από Windows και αντίστροφα

    Θα μπορούσες να επιτύχεις το ίδιο πιο απλά χρησιμοποιώντας τις WinAPI functions:

    Private Declare Function OemToCharBuff Lib "user32" Alias "OemToCharBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long
    Private Declare Function CharToOemBuff Lib "user32" Alias "CharToOemBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long

    Αυτές μετατρέπουν από ANSI σε OEM (κονσόλα) και το αντίστροφο...

    Πιθανή χρήση τους θα μπορούσε να είναι κάτι όπως το ακόλουθο...

    Private Function ConvertANSItoOEM(sData As String) As String
    Dim rc As Long

        ConvertANSItoOEM = String(Len(sData), 0)
        rc = CharToOemBuff(sData, ConvertANSItoOEM, Len(ConvertANSItoOEM))

    End Function

     

    George J.

     


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  05-02-2006, 18:23 9259 σε απάντηση της 9255

    Απ: Ένα μικρό utility για μετατροπή κειμένου σέ DOS Format από Windows και αντίστροφα

    Αγαπητέ Γιώργο ,
    το γνωρίζω αυτό που αναφέρεις και σίγουρα είναι και το ποιό σωστό .Ισως να έπρεπε νά διορθώσω τον τίτλο σέ κάτι πιο σωστό.
    π.χ. μετατροπή ΟΕΜ σε CHAR και αντίστροφα χωρις API calls

    Ιωάννης Μανουσάκης
  •  05-02-2006, 21:20 9266 σε απάντηση της 9259

    Απ: Ένα μικρό utility για μετατροπή κειμένου σέ DOS Format από Windows και αντίστροφα

    Δεν δέχομαι ότι η δική μου λύση είναι πιο σωστή. Άλλωστε και οι δύο αποτελούν λύση του ίδιου προβλήματος.

    Θα έλεγα ότι η δική σου λύση, βασίζεται στην τεχνογνωσία που έχεις, το craftsmanship (την ικανότητα να κατασκευάζεις από το μηδέν), που είναι σημαντικό να υπάρχει σε κάθε προγραμματιστή, ώστε να μπορεί να λύνει και πιο πολύπλοκα προβλήματα από αυτό.

    Η δική μου λύση βασίζεται απλά στην γνώση του Windows API και ότι δεν έχω το χρόνο να φτιάξω ένα αλγόριθμο παρόμοιο με τον δικό σου.

    Να πω την αλήθεια, ζηλεύω πλέον που δεν έχω το χρόνο να φτιάχνω τέτοιες λύσεις, και καταφεύγω στις γνώσεις μου για το «γρήγορα και εύκολα»...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  05-02-2006, 22:23 9272 σε απάντηση της 9255

    Απ: Ένα μικρό utility για μετατροπή κειμένου σέ DOS Format από Windows και αντίστροφα

    Δεν θεωρώ ότι είναι γρήγορο και εύκολο για την λύση που έδωσες.
    Απλά πρέπει να σκεφτούμε γιατί να ανακαλύψουμε τον τροχό όταν ήδει υπάρχει.
    Την λύση που έδωσα μπορούμε να την δούμε σάν ένα case study γι΄αυτούς που αρχίζουν να μπαίνουν στον προγραμματισμό.

    Φιλικά
    Ι.Μανουσάκης
    Ιωάννης Μανουσάκης
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems