,
© 199x, ,, .
, 866 1251, . , API.
, Windows 3.x/95 , DOS Windows, OEM ANSI. Windows. 866 1251 . ( , Microsoft . , , , , ... .)
API OEM- ANSI, . 32- :
CharToOem ANSI OEM ( API/16 AnsiToOem);
OemToChar OEM ANSI (API/16 OemToAnsi);
API 16/32 , . (API/32):
Private Declare Function GetOEMCP Lib "kernel32" () As Long Private Declare Function GetACP Lib "kernel32" () As Long Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long Private Sub Form_Load() ' OemCP& = GetOEMCP ' OEM (DOS) AnsiCP& = GetACP ' ANSI (Windows) Debug.Print OemCP&; AnsiCP& ' = 866 2151 ' ' FilePath$ = "russian.txt" Open FilePath$ For Input As #1 Line Input #1, InputStr$ Print InputStr$ OutputStr$ = Space$(Len(InputStr$)) ' Code& = OemToChar(InputStr$, OutputStr$) ' ' Print Code&: Print InputStr$: Print OutputStr$ Close #1 End Sub
:
DOS Windows. , QuickBasic 4.x:
FUNCTION SymChange$ (Text$, NewCode$, OldCode$) ' ' OldCode$ -> NewCode$: ' Text$ OldCode$ ' NewCode$ ' ' ! ' : LEN(NewCode$)=LEN(OldCode$) '- Sym$ = Text$: Ltext% = LEN(Text$) IF Ltext% > 0 THEN FOR i% = 1 TO Ltext% k% = INSTR(OldCode$, MID$(Text$, i%, 1)) IF k% > 0 THEN MID$(Sym$, i%, 1) = MID$(NewCode$, k%, 1) END IF NEXT i% END IF SymChange$ = Sym$ END FUNCTION FUNCTION RusDosWin$ (Text$, Code%) ' ' : ' Code% = 0 - DOS Windows ' = 1 - ' ' D$ - DOS (cp866) ' W$ - Windows (cp1251) ' : ' ...... ' '============================================ CONST D$ = "_ " CONST W$ = "_ " ' ============================================ IF Code% = 0 THEN RusDosWin$ = SymChange(Text$, W$, D$) ELSE RusDosWin$ = SymChange(Text$, D$, W$) END IF END FUNCTION FUNCTION ULrus$ (Text$, Code%) ' ' : ' Code% = 0 - ' = 1 - ' ELSE - ' ( UCASE$/LCASE$, ) ' CONST Urus$ = "" CONST Lrus$ = "" ' SELECT CASE Code% CASE 0: ULrus$ = SymChange$(Text$, Urus$, Lrus$) CASE 1: ULrus$ = SymChange$(Text$, Lrus$, Urus$) END SELECT END FUNCTION FUNCTION DoubleSpaceDelete$ (Text$) ' ' Text$ ' Temp$ = RTRIM$(Text$) DO Num% = INSTR(Temp$, " ") ' IF Num% <= 0 THEN EXIT DO Temp$ = LEFT$(Temp$, Num%) + MID$(Temp$, Num% + 2) LOOP DoubleSpaceDelete$ = Temp$ END FUNCTION FUNCTION StrFilter$ (Text$, Filter$) '================================================================ ' Text$ ' ' Filter$=CHR$(CodeFilter%)+FilterString$ ' Filter$ - , ' - / ' CodeFilter%=ASC(Filter$) ' =0 - Text$, ' - FilterString$ ' =1 - Text$, ' - FilterString$ '=============================================================== Temp$ = "": CodeFilter% = ASC(Filter$) FOR i% = 1 TO LEN(Text$) Sym$ = MID$(Text$, i%, 1) IF (SGN(INSTR(2, Filter$, Sym$)) XOR CodeFilter%) <> 0 THEN Temp$ = Temp$ + Sym$ END IF NEXT i% StrFilter$ = Temp$ END FUNCTION
Basic/DOS ( ) DOS/Windows VB/Win DECLARE.
a$ = "" b$ = SymChange$(a$, "", "") PRINT b$ ' - ""
W$ = "": D$ = "" For i = 192 To 255: W$ = W$ + Chr$(i): Next For i = 128 To 175: D$ = D$ + Chr$(i): Next For i = 224 To 236: D$ = D$ + Chr$(i): Next Print W$: Print D$
PhoneNumber$ = "369-76-97" CodeFilter% = 0 ' FilterString$ = "1234567890" Filter$ = CHR$(CodeFilter%) + FilterString$ NewNumber$ = StrFilter$(PhoneNumber$, Filter$) PRINT NewNumber$ ' : '3697697'
, Basic DOS, VB/Win. DOS Windows ( ) . , , . : DOS Windows 866 1251 .
DOS VB, , , , . VB/Win, , , 866 1251. , , WinWord: " MS-DOS", " ". , , - , , DOS, Windwos.
, . : Print ", !" . , , , DOS Windows.
, RusDosWin$. , D$ W$ , , . "......" DOS Windows . , RusDosWin$ DOS, :
Const D$ = "......" Const W$ =
Windows, :
Const D$ = ( !) Const W$ = "......"
, , .
, RusDosWin$ DOS QB D$, W$ . ">" DOS , D$. WinWord " MS-DOS", D$ W$ " ". DOS, , W$. Windows, , W$.
:
. , DOS Windows, DOS :
WinWord "" ( ) "". DOS, :
''""
: 145 146 ( DOS C ) , "" 39. , DOS , Windows ( )! (34, 147, 148).