דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. קידוד עברית דוס ל windows vba

קידוד עברית דוס ל windows vba

מתוזמן נעוץ נעול הועבר ארכיון code613m
12 פוסטים 4 כותבים 965 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    ארכיטקט
    כתב ב נערך לאחרונה על ידי
    #1

    שלום לכולם, כידוע חברות האשראי עובדות על סטרינג בקידוד של דוס, יש תשובה אחת שמתקבלת כטקסט זהו שם הכרטיס.
    למשל:
    („†‰…) Cal = Cal )ויזה(
    ˆ—˜‰‰ƒ ˆ˜‹€˜™‰ = ישראכרט דיירקט
    וכן הלאה.
    האם יש קוד פנימי ב vba בלי רפרנסים ובלי כאב ראש, שיכול להמיר את הנתונים.

    פורסם במקור בפורום CODE613 ב07/01/2014 16:10 (+02:00)

    אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

    תגובה 1 תגובה אחרונה
    0
    • רחמיםר מנותק
      רחמיםר מנותק
      רחמים מורחק
      כתב ב נערך לאחרונה על ידי
      #2

      זה נראה בסה''כ כמה עשרות תוים להמיר מקידוד אחד לשני, אז תעשה פונקציה שיש בה שני מערכים זה כנגד זה במערך אחד סידרה של אותיות בקידוד רגיל ובמערך שני במקביל סידרה של אותם האותיות בקידוד DOC וכך תמיר מאחד לשני.

      פורסם במקור בפורום CODE613 ב07/01/2014 16:14 (+02:00)

      תגובה 1 תגובה אחרונה
      0
      • א מנותק
        א מנותק
        ארכיטקט
        כתב ב נערך לאחרונה על ידי
        #3

        טוב את זה ברור שניסיתי, לא חשבתי לכתוב אפילו.
        המהדר לא ממש "מבין" את הקידוד כשאתה נותן לו ככה סטרינגים מג'וברשים.
        צריך פונקציה ברמה של ביטים שתדע לעשות את העבודה. יש כמה דברים כאלו, רק לא מצאתי ספציפית. מגיקוד ודאי יודע לעשות את זה.

        פורסם במקור בפורום CODE613 ב07/01/2014 16:17 (+02:00)

        אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

        תגובה 1 תגובה אחרונה
        0
        • רחמיםר מנותק
          רחמיםר מנותק
          רחמים מורחק
          כתב ב נערך לאחרונה על ידי
          #4

          אם המהדר לא מבין את הגיבריש אתה יכול להשתמש בפונקציות CHR או CHRW ולעשות מזה מערך.
          כדי לבדוק מה המספר של כל תו אתה יכול לרשום את כולם בוורד ועל כל אחד להפעיל את הפונקציה ASC שתאמר לך מה המספר של אותו תו, אח''כ תרשום את המספר שקיבלת כך :

          CHRW(המספר שהתקבל)
          

          פורסם במקור בפורום CODE613 ב07/01/2014 16:20 (+02:00)

          תגובה 1 תגובה אחרונה
          0
          • clickoneC מנותק
            clickoneC מנותק
            clickone
            כתב ב נערך לאחרונה על ידי
            #5

            ספציפית לגבי האשראי אני זוכר שדיברתי איתם בעבר ע"ז, והם נתנו לי רשימה של כל הכרטיסים לפי הID שמתקבל באחת הפוזיציות. (זה היה הפיתרון שלהם)

            בכל מקרה:

            'API שהופך קידוד ווינדוס לדוס - מתאים להמרה בשביל הקובץ מסב
            Private Declare Function CharToOemA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
            ' API הפוך. ממיר לווינדוס
            Private Declare Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
            
            
            Public Function test()
            Dim t As String
            t = "ˆ—˜‰‰ƒ ˆ˜‹€˜™‰ "
            OemToCharA t, t
            'צריך להשתמש בStrReverse כדי להפוך את הסטרינג
            MsgBox StrReverse(t)
            End Function
            

            פורסם במקור בפורום CODE613 ב07/01/2014 16:43 (+02:00)

            אין טסט כמו פרודקשן.

            המייל שלי urivpn@gmail.com

            תגובה 1 תגובה אחרונה
            2
            • M מנותק
              M מנותק
              magicode
              כתב ב נערך לאחרונה על ידי
              #6

              זה קוד עתיק שכתבתי לפני 4 שנים בערך.

              'עברית זה קוד 1264
                  Function ToUnicode(ByVal Str As String, ByVal CodeNumber As Int16) As String
                      Dim s As String = ""
                      For a As Integer = 1 To Len(Str)
                          Dim b As Integer = AscW(Mid(Str, a, 1))
                          If b >= &H80 Then 'And b <= &HFF
                              s &= ChrW(b + CodeNumber)
                          Else
                              s &= ChrW(b)
                          End If
                      Next
                      Return s
                  End Function
              

              הרעיון זה להגדיל את הקוד באופן יחסי.

              פורסם במקור בפורום CODE613 ב07/01/2014 17:21 (+02:00)

              תגובה 1 תגובה אחרונה
              0
              • M מנותק
                M מנותק
                magicode
                כתב ב נערך לאחרונה על ידי
                #7

                תסתכל גם בפוזיצה 60 גודל 1 אמור להיות שם קוד של חברת האשראי.

                פורסם במקור בפורום CODE613 ב07/01/2014 17:26 (+02:00)

                תגובה 1 תגובה אחרונה
                0
                • א מנותק
                  א מנותק
                  ארכיטקט
                  כתב ב נערך לאחרונה על ידי
                  #8

                  הקוד של מגיקוד מוליך אותי מגי'בריש לג'יבריש ב vba כמובן
                  וזה מה שהוא נותן: ޶ߌ┩▜ߌ☒┠
                  עכשיו גם האתר של ג'יבריש לא יודע איך לאכול את זה.

                  הקוד הזה:

                  Public Function UnicodeEncode(Str) As String
                      If IsNull(Str) Then Exit Function
                      Dim i, a
                      For i = 1 To Len(Str)
                              a = AscW(Mid(Str, i, 1))
                              If a > -1 And a < 127 Then
                                  UnicodeEncode = UnicodeEncode & "%" & String(2 - Len(Hex(a)), "0") & Hex(a)
                              ElseIf a > -1 Or a < 65535 Then
                                  UnicodeEncode = UnicodeEncode & "%u" & String(4 - Len(Hex(a)), "0") & Hex(a)
                              End If
                      Next
                  End Function
                  

                  מחזיר את זה:
                  %20%20%20%20%20%20%20%20%u02C6%u02DC%u2039%u20AC%u02DC%u2122%u2030

                  שזה כמדומני משהו בסיגנון של json אלא אם כן אני מדבר שטויות.

                  את הקוד של קליק וואן עוד לא ניסתי, יש לי קושי להשתמש ברפרנסים ופוקציות וינדווס. גם בגלל החילוק בין 32 ל 64 ביט.

                  פורסם במקור בפורום CODE613 ב07/01/2014 18:12 (+02:00)

                  אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

                  תגובה 1 תגובה אחרונה
                  0
                  • clickoneC מנותק
                    clickoneC מנותק
                    clickone
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @ארכיטקט

                    את הקוד של קליק וואן עוד לא ניסתי, יש לי קושי להשתמש ברפרנסים ופוקציות וינדווס. גם בגלל החילוק בין 32 ל 64 ביט.

                    זה עובד גם על 64 ביט ללא רפרנסים.(לא אקסס 64 ביט, אלא ווינדוס 64 ביט - באקסס אם אתה מקמפל ל64 ביט אתה יכול להשתמש בזה רק ב64 ביט, ואפילו סגירה באקסס 32 ביט לא תיפתח כמו שצריך באקסס 64 ביט - לזה אתה מתכוון?).
                    את הקוד הנ"ל אני כתבתי על ווינדוס 64 ביט.

                    פורסם במקור בפורום CODE613 ב07/01/2014 22:06 (+02:00)

                    אין טסט כמו פרודקשן.

                    המייל שלי urivpn@gmail.com

                    תגובה 1 תגובה אחרונה
                    0
                    • רחמיםר מנותק
                      רחמיםר מנותק
                      רחמים מורחק
                      כתב ב נערך לאחרונה על ידי
                      #10

                      אפשר גם להשתמש בדבר כזה בתוך הפונקציה או בכל מקום בקוד:

                      #If VBA7 Then
                       ' קוד המתאים ל 64 ביט
                          #Else
                         'קוד המתאים ל 32 ביט
                          #End If
                      

                      פורסם במקור בפורום CODE613 ב07/01/2014 22:26 (+02:00)

                      תגובה 1 תגובה אחרונה
                      0
                      • clickoneC מנותק
                        clickoneC מנותק
                        clickone
                        כתב ב נערך לאחרונה על ידי
                        #11

                        @ארכיטקט

                        את הקוד של קליק וואן עוד לא ניסתי, יש לי קושי להשתמש ברפרנסים ופוקציות וינדווס. גם בגלל החילוק בין 32 ל 64 ביט.

                        בנוסף, אם באמת אתה סוגר את האקסס גם ל64 ביט (או לא סוגר אותו בכלל :lol: :lol: :lol: ), יש לך דרך להשתמש בפונקציות API, אתה צריך רק להוסיף
                        הגדרה בהצהרה שזו פונקצייה בטוחה.
                        להגדרה קוראים: PtrSafe
                        ולפיכך ההצהרה תהיה:

                        Private Declare PtrSafe Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
                        

                        כדי שלא תצטרך לנהל גירסאות 32 ו64 ביט, תוכל להשתמש בהצהרה בתחביר הבא:

                        #If VBA7 Then
                            Private Declare PtrSafe Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
                        #Else
                            Private Declare Function OemToCharA Lib "user32.dll" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
                        #End If
                        

                        כמובן שההצהרה יושבת בראש המודול. הסולמית בהתחלה מאפשרת לIF לרוץ אפילו שהוא לא בתוך פונקצייה.
                        מידע נוסף לגבי פונקציות API בסביבת אופי 64 ביט תוכל למצוא כאן

                        פורסם במקור בפורום CODE613 ב07/01/2014 22:32 (+02:00)

                        אין טסט כמו פרודקשן.

                        המייל שלי urivpn@gmail.com

                        תגובה 1 תגובה אחרונה
                        0
                        • א מנותק
                          א מנותק
                          ארכיטקט
                          כתב ב נערך לאחרונה על ידי
                          #12

                          ר' קליק, לא תאמין מה קרה, זרח מפרחוני כל האשכול הזה (כנראה שהלקוח שכח מזה, אחרת איך אפשר לשכוח כשמקבלים טלפון בהול כל בוקר "יש לי ג'יבריש בכרטיסי אשראי!!!!"). כיום נתקלתי שוב בשאלה, כדרכי תישאלתי את גוגל באנגלית (כי מי מצפה שמישהו יכתוב תשובות בעברית) וגוגל הפנה אותי לא פחות ולא יותר, לכאן!!
                          אז התשובה שלך אכן פתרה את הבעיה ויישר כוח.

                          פורסם במקור בפורום CODE613 ב04/11/2014 13:47 (+02:00)

                          אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

                          תגובה 1 תגובה אחרונה
                          1

                          בא תתחבר לדף היומי!
                          • התחברות

                          • אין לך חשבון עדיין? הרשמה

                          • התחברו או הירשמו כדי לחפש.
                          • פוסט ראשון
                            פוסט אחרון
                          0
                          • דף הבית
                          • קטגוריות
                          • פוסטים אחרונים
                          • משתמשים
                          • חיפוש
                          • חוקי הפורום