Tests Copying, Pasting, API Cliipboard issues. and Rough notes on Advanced API stuff
This Thread is for posts and notes around the theme of API Cliipboard issues, and basic, intermediate and Advanced API stuff
The first page will be used for temporary notes that may or may not be relevant and likely will be deleted / copied over from time to time, so this first post will be of no interest to anyone else, ( other than a partial index / contents, although this may be a bit inaccurate sometimes, as it is often for my temporary orientation )
VB Strings
Page 2 starts with some basic background stuff required for api string stuff.
From Page 4 is for some intermediate stuff or results and conclusions from large amounts of measurements which in later pages may be referenced to justify shortened conclusions
From Page 6 is for a final attempt, with experiments to finally explain the issues around strings and the win 32 api
https://www.youtube.com/watch?v=vXyMScSbhk4
https://www.youtube.com/watch?v=vXyMScSbhk4&lc=UgynOSp1dleo-Z8L_QN4AaABAg.9jJLDC1Z6L-9k68CuL4aTY
https://www.youtube.com/watch?v=vXyMScSbhk4&lc=UgwV5N_ulFXYMNbyQG54AaABAg. 9itCkoVN4w79itOVYVvEwQ
https://www.youtube.com/watch?v=vXyMScSbhk4&lc=UgyOh-eR43LvlIJLG5p4AaABAg.9isnKJoRfbL9itPC-4uckb
https://www.youtube.com/watch?v=vXyMScSbhk4&lc=Ugy1B1aQnHq2WbbucmR4AaABAg. 9isY3Ezhx4j9itQLuif26T
https://www.youtube.com/watch?v=vXyMScSbhk4&lc=UgxxajSt03TX1wxh3IJ4AaABAg. 9irSL7x4Moh9itTRqL7dQh
https://www.youtube.com/watch?v=vXyMScSbhk4&lc=Ugxa2VYHMWJWXA6QI294AaABAg. 9irLgSdeU3r9itU7zdnWHw
https://www.youtube.com/watch?v=vXyMScSbhk4&lc=UgwJAAPbp8dhkW2X1Uh4AaABAg. 9iraombnLDb9itV80HDpXc
https://www.youtube.com/watch?v=vXyMScSbhk4&lc=UgzIzQ6MQ5kTpuLbIuB4AaABAg. 9is0FSoF2Wi9itWKEvGSSq
API Extended Advanced Software Theory Roughg Notes_2824_.doc
Dumping Logs. Recurring Excample
Dumping Logs for support of this Thread Post:
http://www.excelfox.com/forum/showth...0476#post10476
Test Function used to produce the Log below
Code:
'Going a HoldYaBackCalledYaBackClapTrapRuc - Copy number_GlobinalCntChopsLog - a few copies of this are made and run. (Recursion)
'_-=Rem 4===================??? Got me hook lochprocedue in my code , 5 times simple run then another + 29 new copies of it are run = 5+30=35 times in total calling it it a few times http://www.excelfox.com/forum/showthread.php/1324-Loop-Through-Files-In-A-Folder-Using-VBA#post10421 .... wanking myself up and down a few times
Private Function HoldYaBackCalledYaBackClapTrapRuc(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long ' ByVal CopyNumberFroNxtLvl As Long) As Long
Let GlobinalCntChopsLog = GlobinalCntChopsLog + 1: Debug.Print " Going a HoldYaBackCalledYaBackClapTrapRuc"; GlobinalCntChopsLog; "(1Msg"; lMsg; ", wParam"; wParam; ", lParam"; lParam; ") Function Copy Number_"; GlobinalCntChopsLog
'If GlobinalCntChopsLog = 2 Then Let GlobinalCntChopsLog = GlobinalCntChopsLog - 1: UnHookWindowsHookCodEx hHookTrapCrapNumber: Exit Function
If lMsg = 5 Then '_-.... ( Hook type: HCBT_ACTIVATE = 5 but not here?) ... this runs a further 29 copies of HoldYaBackCalledYaBackClapTrap all coming here, so 30 times in total
Debug.Print "Expose Interface"; Tab(30); GlobinalCntChopsLog
SetWindowPosition wParam, 0, poX, pussY, 400, 150, 40 ' SWP_NOZORDER is 4 .. but not here?? 'SWP_NOSIZE + SWP_NOZORDER ' Pull the Chainge position ...
UnHookWindowsHookCodEx hHookTrapCrapNumber ' Release the Hook 30 times this is done
Else
Debug.Print "No InterOfCourse"; Tab(30); GlobinalCntChopsLog; Tab(50); hHookTrapCrapNumber
End If ' 5 times here then '_-....
Debug.Print "Wipe chain WRap"; Tab(30); GlobinalCntChopsLog; Tab(50); hHookTrapCrapNumber
Let HoldYaBackCalledYaBackClapTrapRuc = 0 ' Done 5+30=35 times in total '0 (or False) makes it work, all other numbers and I get no Message box
Let GlobinalCntChopsLog = GlobinalCntChopsLog - 1
End Function ' HoldYaBackCalledYaBackClapTrapRuc
Code:
---------------------------
MutsNuts AkaApi working ApplicationPromptToRangeInputBox
---------------------------
Select Range
---------------------------
OK
---------------------------
WndNumber 66770 HandleWndOfMyParent 983700 hWndDskTop 66204 hHookTrapCrapNumber
State of Much Such Penialtration's Number HookCodeXcretion's
================== AliAs Pull of my chain AliAs my long Hook
0
Going a HoldYaBackCalledYaBackClapTrapRuc 1 (1Msg 3 , wParam 2623104 , lParam 2353392 ) Function Copy Number_ 1
No InterOfCourse 1 276039693
Wipe chain WRap 1 276039693
Going a HoldYaBackCalledYaBackClapTrapRuc 1 (1Msg 3 , wParam 1377832 , lParam 2353500 ) Function Copy Number_ 1
No InterOfCourse 1 276039693
Wipe chain WRap 1 276039693
Going a HoldYaBackCalledYaBackClapTrapRuc 1 (1Msg 3 , wParam 3934358 , lParam 2353500 ) Function Copy Number_ 1
No InterOfCourse 1 276039693
Wipe chain WRap 1 276039693
Going a HoldYaBackCalledYaBackClapTrapRuc 1 (1Msg 3 , wParam 984706 , lParam 2353480 ) Function Copy Number_ 1
No InterOfCourse 1 276039693
Wipe chain WRap 1 276039693
Going a HoldYaBackCalledYaBackClapTrapRuc 1 (1Msg 9 , wParam 3934358 , lParam 66766 ) Function Copy Number_ 1
No InterOfCourse 1 276039693
Wipe chain WRap 1 276039693
Going a HoldYaBackCalledYaBackClapTrapRuc 1 (1Msg 5 , wParam 2623104 , lParam 2353812 ) Function Copy Number_ 1
Expose Interface 1
Going a HoldYaBackCalledYaBackClapTrapRuc 2 (1Msg 5 , wParam 2623104 , lParam 2353500 ) Function Copy Number_ 2
Expose Interface 2
Going a HoldYaBackCalledYaBackClapTrapRuc 3 (1Msg 5 , wParam 2623104 , lParam 2353188 ) Function Copy Number_ 3
Expose Interface 3
Going a HoldYaBackCalledYaBackClapTrapRuc 4 (1Msg 5 , wParam 2623104 , lParam 2352876 ) Function Copy Number_ 4
Expose Interface 4
Going a HoldYaBackCalledYaBackClapTrapRuc 5 (1Msg 5 , wParam 2623104 , lParam 2352564 ) Function Copy Number_ 5
Expose Interface 5
Going a HoldYaBackCalledYaBackClapTrapRuc 6 (1Msg 5 , wParam 2623104 , lParam 2352252 ) Function Copy Number_ 6
Expose Interface 6
Going a HoldYaBackCalledYaBackClapTrapRuc 7 (1Msg 5 , wParam 2623104 , lParam 2351940 ) Function Copy Number_ 7
Expose Interface 7
Going a HoldYaBackCalledYaBackClapTrapRuc 8 (1Msg 5 , wParam 2623104 , lParam 2351628 ) Function Copy Number_ 8
Expose Interface 8
Going a HoldYaBackCalledYaBackClapTrapRuc 9 (1Msg 5 , wParam 2623104 , lParam 2351316 ) Function Copy Number_ 9
Expose Interface 9
Going a HoldYaBackCalledYaBackClapTrapRuc 10 (1Msg 5 , wParam 2623104 , lParam 2351004 ) Function Copy Number_ 10
Expose Interface 10
Going a HoldYaBackCalledYaBackClapTrapRuc 11 (1Msg 5 , wParam 2623104 , lParam 2350692 ) Function Copy Number_ 11
Expose Interface 11
Going a HoldYaBackCalledYaBackClapTrapRuc 12 (1Msg 5 , wParam 2623104 , lParam 2350380 ) Function Copy Number_ 12
Expose Interface 12
Going a HoldYaBackCalledYaBackClapTrapRuc 13 (1Msg 5 , wParam 2623104 , lParam 2350068 ) Function Copy Number_ 13
Expose Interface 13
Going a HoldYaBackCalledYaBackClapTrapRuc 14 (1Msg 5 , wParam 2623104 , lParam 2349756 ) Function Copy Number_ 14
Expose Interface 14
Going a HoldYaBackCalledYaBackClapTrapRuc 15 (1Msg 5 , wParam 2623104 , lParam 2349444 ) Function Copy Number_ 15
Expose Interface 15
Going a HoldYaBackCalledYaBackClapTrapRuc 16 (1Msg 5 , wParam 2623104 , lParam 2349132 ) Function Copy Number_ 16
Expose Interface 16
Going a HoldYaBackCalledYaBackClapTrapRuc 17 (1Msg 5 , wParam 2623104 , lParam 2348820 ) Function Copy Number_ 17
Expose Interface 17
Going a HoldYaBackCalledYaBackClapTrapRuc 18 (1Msg 5 , wParam 2623104 , lParam 2348508 ) Function Copy Number_ 18
Expose Interface 18
Going a HoldYaBackCalledYaBackClapTrapRuc 19 (1Msg 5 , wParam 2623104 , lParam 2348196 ) Function Copy Number_ 19
Expose Interface 19
Going a HoldYaBackCalledYaBackClapTrapRuc 20 (1Msg 5 , wParam 2623104 , lParam 2347884 ) Function Copy Number_ 20
Expose Interface 20
Going a HoldYaBackCalledYaBackClapTrapRuc 21 (1Msg 5 , wParam 2623104 , lParam 2347572 ) Function Copy Number_ 21
Expose Interface 21
Going a HoldYaBackCalledYaBackClapTrapRuc 22 (1Msg 5 , wParam 2623104 , lParam 2347260 ) Function Copy Number_ 22
Expose Interface 22
Going a HoldYaBackCalledYaBackClapTrapRuc 23 (1Msg 5 , wParam 2623104 , lParam 2346948 ) Function Copy Number_ 23
Expose Interface 23
Going a HoldYaBackCalledYaBackClapTrapRuc 24 (1Msg 5 , wParam 2623104 , lParam 2346636 ) Function Copy Number_ 24
Expose Interface 24
Going a HoldYaBackCalledYaBackClapTrapRuc 25 (1Msg 5 , wParam 2623104 , lParam 2346324 ) Function Copy Number_ 25
Expose Interface 25
Going a HoldYaBackCalledYaBackClapTrapRuc 26 (1Msg 5 , wParam 2623104 , lParam 2346012 ) Function Copy Number_ 26
Expose Interface 26
Going a HoldYaBackCalledYaBackClapTrapRuc 27 (1Msg 5 , wParam 2623104 , lParam 2345700 ) Function Copy Number_ 27
Expose Interface 27
Going a HoldYaBackCalledYaBackClapTrapRuc 28 (1Msg 5 , wParam 2623104 , lParam 2345388 ) Function Copy Number_ 28
Expose Interface 28
Going a HoldYaBackCalledYaBackClapTrapRuc 29 (1Msg 5 , wParam 2623104 , lParam 2345076 ) Function Copy Number_ 29
Expose Interface 29
Going a HoldYaBackCalledYaBackClapTrapRuc 30 (1Msg 5 , wParam 2623104 , lParam 2344764 ) Function Copy Number_ 30
Expose Interface 30
Wipe chain WRap 30 276039693
Wipe chain WRap 29 276039693
Wipe chain WRap 28 276039693
Wipe chain WRap 27 276039693
Wipe chain WRap 26 276039693
Wipe chain WRap 25 276039693
Wipe chain WRap 24 276039693
Wipe chain WRap 23 276039693
Wipe chain WRap 22 276039693
Wipe chain WRap 21 276039693
Wipe chain WRap 20 276039693
Wipe chain WRap 19 276039693
Wipe chain WRap 18 276039693
Wipe chain WRap 17 276039693
Wipe chain WRap 16 276039693
Wipe chain WRap 15 276039693
Wipe chain WRap 14 276039693
Wipe chain WRap 13 276039693
Wipe chain WRap 12 276039693
Wipe chain WRap 11 276039693
Wipe chain WRap 10 276039693
Wipe chain WRap 9 276039693
Wipe chain WRap 8 276039693
Wipe chain WRap 7 276039693
Wipe chain WRap 6 276039693
Wipe chain WRap 5 276039693
Wipe chain WRap 4 276039693
Wipe chain WRap 3 276039693
Wipe chain WRap 2 276039693
Wipe chain WRap 1 276039693
_-.__________________________________
Windows Handleing Info:
Code:
' 1b) To hang in the Excel Window malking it effectively a Excel Msgbox... Normally if I did not do this ... don't do this .. that is to say leave it at 0 , specifically no window is 0 , and it "hanging in mid air so isn't even if it is imaginatively speaking
Public Declare Function FindWndNumber Lib "user32" Alias "FindWindowA" (Optional ByVal lpClassName As String, Optional ByVal lpWindowName As String) As Long
Dim HandleWndOfMyParent As Long ' I wanted to comment this 1b)(i) and ( 1b(ii) later ) out to leave it hanging in mid air in a virtual inadvirtual not thereness ... but somehow this complicated hook stuff does hang it somwhere but not in my Excel Window but I don't know what my parent's fart has to do with anything
' 1d) For some Misc experiments
Private Declare Function FindWindowExtremeNutty Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Dim WndNumber As Long, hWndDskTop As Long
Code:
Sub AkaApiApplicationPromptToRangeInputBox() ' This one works.. but HTF
' 1b(ii) This section is some how over written in / by the section part or some strange Addressing of HoldYaBackCalledYaBackClapTrap
Let WndNumber = FindWndNumber(lpClassName:=vbNullString, lpWindowName:=vbNullString)
Let HandleWndOfMyParent = FindWndNumber(lpClassName:="XLMAIN", lpWindowName:=vbNullString) ' This is a case where vbNullstring is important - that signifies that I am not giving it, which i do not have to. The second option is a bit flaky and does not often work. it certainly won't work if you make it "" as that is a specific string of zero. Null is a special idea in computing of not set yet / not defined - that is required if I do not want to give it
' 1d) Just some experiments, I forgot why as my brain has goine comfortably numb
Dim HeavyWindBreak As Long: Let HeavyWindBreak = HandleWndOfMyParent
Let hWndDskTop = FindWindowExtremeNutty(HandleWndOfMyParent, 0&, "XLDESK", vbNullString)
Debug.Print "WndNumber"; WndNumber; " HandleWndOfMyParent"; HandleWndOfMyParent; " hWndDskTop"; hWndDskTop; " hHookTrapCrapNumber"
Rem 3 Mess with me hook? God knows what this all does and it seems to make no difference if the proXYs poX or pussY are before or after SetWindowsHooksExample
Function CStrSepDbl Excel VBA comma point thousand decimal separator number problem
Code for this Thread:
http://www.excelfox.com/forum/showth...0503#post10503
http://www.excelfox.com/forum/forumd...ips-and-Tricks
Function CStrSepDbl
Code:
'10 ' http://www.eileenslounge.com/viewtopic.php?f=27&t=22850#p208624
Function CStrSepDbl(Optional ByVal strNumber As String) As Double ' Return a Double based on a String Input which is asssumed to "Look" like a Number. The code will work for Leading and Trailing zeros, but will not return them. )
20 Rem 0 At the Dim stage a '_-String is "Pointer" to a "Blue Print" (or Form, Questionaire not yet filled in, a template etc.)"Pigeon Hole" in Memory, sufficient in construction to house a piece of Paper with code text giving the relevant information for the particular Variable Type. VBA is sent to it when it passes it. In a Routine it may be given a particular “Value”, or (“Values” for Objects). There instructions say then how to do that and handle(store) that(those). At Dim the created Paper is like a Blue Print that has some empty spaces not yet filled in. A String is a bit tricky. The Blue Print code line Paper in the Pigeon Hole will allow to note the string Length and an Initial start memory Location. This Location well have to change frequently as strings of different length are assigned. Instructiions will tell how to do this. Theoretically a specilal value vbNullString is set to aid in quich checks, But http://www.mrexcel.com/forum/excel-questions/361246-vbnullstring-2.html#post44116
30 If StrPtr(strNumber) = 0 Then Let CStrSepDbl = "9999999999": Exit Function '_- StrPtr(MyVaraibleNotYetUsed)=0 .. http://www.excelfox.com/forum/showthread.php/1828-How-To-React-To-The-Cancel-Button-in-a-VB-(not-Application)-InputBox?p=10463#post10463 https://www.mrexcel.com/forum/excel-questions/35206-test-inputbox-cancel-2.html?highlight=strptr#post2845398 https://www.mrexcel.com/forum/excel-questions/917689-passing-array-class-byval-byref.html#post4412382
40 Rem 1 'Adding a leading zero if no number before a comma or point, change all seperators to comma ,
50 If VBA.Strings.Left$(strNumber, 1) = "," Or VBA.Strings.Left$(strNumber, 1) = "." Then Let strNumber = "0" & strNumber ' case for like .12 or ,7 etc 'VBA Strings collection Left function returns a Variant- initially tries to coerces the first parameter into Variant, Left$ does not, that's why Left$ is preferable over Left, it's theoretically slightly more efficient, as it avoids the overhead/inefficieny associated with the Variant. It allows a Null to be returned if a Null is given. https://www.excelforum.com/excel-new...ml#post4084816 .. it is all to do with ya .."Null propagation".. maties ;) '_-.. http://allenbrowne.com/casu-12.html Null is a special "I do not know, / answer unknown" - handy to hav... propogetion wonks - math things like = 1+2+Null returns you null. Or string manipulation stuff like, left(Null returns you Null. Count things like Cnt (x,y,Null) will return 2 - there are two known things there..Hmm -bit iffy although you could argue that Null has not been entered yet..may never
60 If VBA.Strings.Left$(strNumber, 2) = "-," Or VBA.Strings.Left$(strNumber, 2) = "-." Then Let strNumber = Application.WorksheetFunction.Replace(strNumber, 1, 1, "-0") ' case for like -.12 or -,274 etc
70 Let strNumber = Replace(strNumber, ".", ",", 1, -1, vbBinaryCompare) 'Replace at start any . to a , After this point there should be either no or any amount of ,
80 'Check If a Seperator is present, then MAIN CODE is done
90 If InStr(1, strNumber, ",") > 0 Then 'Check we have at least one seperator, case we have, then..
100 Rem 2 'MAIN CODE part ====
110 'Length of String: Position of last ( Decimal ) Seperator
120 Dim LenstrNumber As Long: Let LenstrNumber = Len(strNumber): Dim posDecSep As Long: Let posDecSep = VBA.Strings.InStrRev(strNumber, ",", LenstrNumber) ' from right the positom "along" from left ( (in strNumber) , for a (",") , starting at the ( Last character ) which BTW. is the default
130 'Whole Number Part
140 Dim strHlNumber As String: Let strHlNumber = VBA.Strings.Left$(strNumber, (posDecSep - 1))
150 Let strHlNumber = Replace(strHlNumber, ",", Empty, 1, -1) 'In (strHlNumber) , I look for a (",") , and replace it with "VBA Nothing there" , considering and returning the strNumber from the start of the string , and replace all occurances ( -1 ).
160 Dim HlNumber As Long: Let HlNumber = CLng(strHlNumber) 'Long Number is a Whole Number, no fractional Part
170 'Fraction Part of Number
180 Dim strFrction As String: Let strFrction = VBA.Strings.Mid$(strNumber, (posDecSep + 1), (LenstrNumber - posDecSep)) 'Part of string (strNumber ) , starting from just after Decimal separator , and extending to a length of = ( the length of the whole strNumber minus the position of the separator )
190 Dim LenstrFrction As Long: Let LenstrFrction = Len(strFrction) 'Digits after Seperator. This must be done at the String Stage, as length of Long, Double etc will allways be 8, I think?.
200 Dim Frction As Double: Let Frction = CDbl(strFrction) 'This will convert to a Whole Double Number. Double Number can have Fractional part
210 Let Frction = Frction * 1 / (10 ^ (LenstrFrction)) 'Use 1/___, rather than a x 0.1 or 0,1 so as not to add another , . uncertainty!!
220 'Re join, using Maths to hopefully get correct Final Value
230 Dim DblReturn As Double 'Double Number to be returned in required Format after maniplulation.
240 If Left(strHlNumber, 1) <> "-" Then 'Case positive number
250 Let DblReturn = CDbl(HlNumber) + Frction 'Hopefully a simple Mathematics + will give the correct Double Number back
260 Else 'Case -ve Number
270 Let strHlNumber = Replace(strHlNumber, "-", "", 1, 1, vbBinaryCompare) ' strHlNumber * (-1) ' "Remove" -ve sign
280 Let DblReturn = (-1) * (CDbl(strHlNumber) + Frction) 'having constructed the value of the final Number we multiply by -1 to put the Minus sign back
290 End If 'End checking polarity.
300 'Final Code Line(s) At this point we have what we want. We need to place this in the "Double Type variable" , CStrSepDbl , so that an assinment like = CStrSepDbl( ) will return this final value
310 Let CStrSepDbl = DblReturn 'Final Double value to be returned by Function
320 Else 'End MAIN CODE. === We came here if we have a Whole Number with no seperator, case no seperator
330 'Simple conversion of a string "Number" with no Decimal Seperator to Double Format
340 Let CStrSepDbl = CDbl(strNumber) 'String to be returned by Function is here just a simple convert to Double ' I guess this will convert a zero length string "" to 0 also
350 End If 'End checking for if a Seperator is present.
End Function
'Long code lines: Referrences http://www.mrexcel.com/forum/about-board/830361-board-wish-list-2.html http://www.mrexcel.com/forum/test-here/928092-http://www.eileenslounge.com/viewtopic.php?f=27&t=22850
Function CStrSepDblshg(strNumber As String) As Double ' http://excelxor.com/2014/09/05/index-returning-an-array-of-values/ http://www.techonthenet.com/excel/formulas/split.php
5 If Left(strNumber, 1) = "," Or Left(strNumber, 1) = "." Then Let strNumber = "0" & strNumber
20 Let strNumber = Replace(strNumber, ".", ",", 1, -1)
40 If InStr(1, strNumber, ",") > 0 Then
170 If Left(Replace(Left(strNumber, (InStrRev(strNumber, ",", Len(strNumber)) - 1)), ",", Empty, 1, 1), 1) <> "-" Then
180 Let CStrSepDblshg = CDbl(CLng(Replace(Left(strNumber, (InStrRev(strNumber, ",", Len(strNumber)) - 1)), ",", Empty, 1, 1))) + CDbl(Mid(strNumber, (InStrRev(strNumber, ",", Len(strNumber)) + 1), (Len(strNumber) - InStrRev(strNumber, ",", Len(strNumber))))) * 1 / (10 ^ (Len(Mid(strNumber, (InStrRev(strNumber, ",", Len(strNumber)) + 1), (Len(strNumber) - InStrRev(strNumber, ",", Len(strNumber)))))))
190 Else
210 Let CStrSepDblshg = (-1) * (CDbl(Replace(Left(strNumber, (InStrRev(strNumber, ",", Len(strNumber)) - 1)), ",", Empty, 1, 1) * (-1)) + CDbl(Mid(strNumber, (InStrRev(strNumber, ",", Len(strNumber)) + 1), (Len(strNumber) - InStrRev(strNumber, ",", Len(strNumber))))) * 1 / (10 ^ (Len(Mid(strNumber, (InStrRev(strNumber, ",", Len(strNumber)) + 1), (Len(strNumber) - InStrRev(strNumber, ",", Len(strNumber))))))))
220 End If
250 Else
270 Let CStrSepDblshg = CDbl(strNumber)
280 End If
End Function
Demo Code to call Function
Code:
Sub TestieCStrSepDbl() ' using adeptly named TabulatorSyncranartor ' / Introducing LSet TabulatorSyncranartor Statement : http://www.excelfox.com/forum/showthread.php/2230-Built-in-VBA-methods-and-functions-to-alter-the-contents-of-existing-character-strings
Dim LooksLikeANumber(1 To 17) As String
Let LooksLikeANumber(1) = "001,456"
Let LooksLikeANumber(2) = "1.0007"
Let LooksLikeANumber(3) = "123,456.2"
Let LooksLikeANumber(4) = "0023.345,0"
Let LooksLikeANumber(5) = "-0023.345,0"
Let LooksLikeANumber(6) = "1.007"
Let LooksLikeANumber(7) = "1.3456"
Let LooksLikeANumber(8) = "1,2345"
Let LooksLikeANumber(9) = "01,0700000"
Let LooksLikeANumber(10) = "1.3456"
Let LooksLikeANumber(11) = "1,2345"
Let LooksLikeANumber(12) = ".2345"
Let LooksLikeANumber(13) = ",4567"
Let LooksLikeANumber(14) = "-,340"
Let LooksLikeANumber(15) = "00.04"
Let LooksLikeANumber(16) = "-0,56000000"
Let LooksLikeANumber(17) = "-,56000001"
Dim Stear As Variant, MyStringsOut As String
For Each Stear In LooksLikeANumber()
Dim Retn As Double
Let Retn = CStrSepDbl(Stear)
Dim TabulatorSyncranartor As String: Let TabulatorSyncranartor = " "
LSet TabulatorSyncranartor = Stear
Let MyStringsOut = MyStringsOut & TabulatorSyncranartor & Retn & vbCrLf
Debug.Print Stear; Tab(15); Retn
Next Stear
MsgBox MyStringsOut
End Sub
Code also Here:
https://pastebin.com/1kq6h9Bn
VBA to automate Send and Automatically Sending of E-Mai
Deleted, -free for another post
Unicode and (Microsoft) ANSI
Unicode ( and (Microsoft) ANSI )
"ANSI " as slang for the "first 256 " : Code Page __ AASI
ANSI as a thing was an attempt to control the different Character – Number lists, in particular the lists under the number 256, rather than being or creating any lists, although some initial draft suggestions were given. Microsoft got into this, some people say hijacked it, taking it over in the mid 1980's, adopting the provisional ANSI suggestions in their first windows in 1985.
The idea at the time centred around giving some identifying name / number for different lists, in the 1 Byte/ 8 Bit lists as discussed so far. In the early to mid-1980's, one main draft suggestion for a 0-255 to character list which covered most common European characters. One of the early Microsoft Lists, which they called a Windows code page, Windows code page 1252 was originally based on that ANSI draft suggestion . This list is very similar to the one from ANSI eventually adopted by the International Organization for Standardization (ISO) Standards, Standard 8859-1. (The idea of the code page was introduced by Microsoft about 1987, It became a general term for a table or list of character codes( numbers) and their corresponding glyphs (characters)
Because of this history, around the mid 1980’s, Microsoft talked about ANSI as the new improved thing compared to ASCII ANSI became a general term for the default code page of a given Operating System, such as Windows, .
For our interest as background to Microsoft VB Strings, when we talk about the characters used under 256 we should probably be referring to the Windows code Page. But following the convention of the historical reference misnomer Perpetration, we would tend to say ANSI.
Such perpetrations feature a lot in comparisons….. examples:
Generally the first 255 list will be referred to as ANSI characters to the 8-bit ANSI code
We might say VB only understands ANSI characters, despite deep in the workings having ……. Unicode xxxxx …….
One way or another, the word code page or ANSI will likely be used as a general term most likely referring to a single Byte, 8 Bit workings in the first 255
A VB string would be described as a ANSI string, under the correct historical reference misnomer Perpetration
I would perhaps suggest perhaps a term such as AASI to be equivalent to "ANSI", where "ANSI" would be likely to be used under the correct historical reference misnomer Perpetration, and this new term AASI could be thought of as a generical term for what people are most likely be referring to as goings-on in a computer either with, or arising from, character processes involved mostly with the first typical 256 (0-255) characters
Unicode
Inevitably something had to be thought about that covered as many things as possible, every character in every language worldwide, and even small pictures, symbols, smiles etc etc.
This came about around 1990, under the general word of Unicode. It is a general term. The idea was to create rules for assigning numbers to all characters on the planet Earth, where characters would extend to things perhaps better described as small unit things typically seen in writings wherever on the plane earth. Maybe like the ANSI idea with an open top end.
The term Unicode is often used imprecisely to refer to whichever Unicode "encoding"** that particular system uses by default. Unicode encoding includes things going by the names of UTF-8, UTF-16, and UTF-32
Putting it another way: Loosely, Unicode is a text encoding standard that defines characters used in various ordinary, literary, academic, and technical contexts in various languages and assigns them abstracted "code points" (numbers). The "encoding" formats (UTF-8, UTF-16 AND UTF-32), on the other hand, define how to translate the standard's abstracted codes for characters into sequences of bytes and thus how they are actually stored in memory)
A few technical terms
_ From ANSI we have the idea 1 Character – 1 number. We make the same thing a bit more advanced sounding by saying 1 Character = 1 Code Point**
_ **The representation in computer memory of a single character (how we write it down), was discussed / shown by the 7 and 8 Bit binary ( 1 Byte ) diagrams for a single decimal "code point" for Ascii/ANSI. We use the smart sounding word Encoding usually in Unicode discussions: Encoding = representation in computer memory of a single character / "how we write it down"
_ In addition to the above we might throw in the word mapping as it sounds good, from time to time. Mostly it is a filler word that probably could be left out completely, as it is usually a general term for any data structure with 'associates' one data value with another.
2 Byte 16 bit stuff (Unicode Encoding)
All this ASCII, "Unicode", ANSI stuff on this page 2 is intended as a background to Microsoft VB Strings, which is in turn intended as a background in learning Win32 API in VBA. So it will be biased towards the Microsoft Unicode Encoding. But just briefly, to put it in perspective, here is a short summary of some of the different encodings, to note briefly but not necessarily needed to understand fully yet:
Code:
UTF-16/ UTF-8
UTF-8 is variable 1 to 4 bytes. – This can be efficient to use for more simple text, (and this has had a bit of a resurgence in recent years, due to some simple text stuff associated with the SmartPhone short message & co.). It may have come after the next one did not take off so well.
UTF-16 is variable 2 or 4 bytes, - but mostly 2, and mostly what Microsoft use. This initial main idea in Unicode encoding is based on using 2 Bytes initially, fixed. The origin is blurred a bit. Backward compatibility is/was hampered a bit, so with this encoding of Unicode, Unicode was impractical, which led to UTF-8. For the first 128, UTF-8 is 1 Byte: UTF-16 is not backwards compatible with ASCII (or any of the ASCII-inclusive 8-bit character encodings). UTF-8, on the other hand is 100% backwards compatible with ASCII
UTF-32 is fixed 4 bytes.
Whenever Microsoft say Unicode in Windows, they almost always actually mean UTF-16
If we wish to concentrate on a working understanding to move forward with VB strings, it may be sufficient to consider that Microsoft’s Unicode encoding is to a first approximation like a 2 column base 256 the wrong way around
A quick working understanding can be got pictorially by comparing and extending the 8 Bit single Byte mapping diagram showing the mapping of a character’s decimal code point to the internal computer binary
Take as example , the decimal number 8230 which in Unicode is the decimal number for a single character looking like 3 small dots close together …
The following sketch shows the code point in UTF-16 2-Byte LE encoding (LE: Little Endian = The wrong way around)
Code:
' Low-end Byte High-end Byte
' 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
' 128 64 32 16 8 4 2 1 128 64 32 16 8 4 2 1
' 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0
' 0 + 0 + 32 + 0 + 0 + 4 + 2 + 0 = 38 0 + 0 + 32 + 0 + 0 + 0 + 0 + 0 = 32
'
' 255^0 256^1
' 1 256
' 38 32
' ( 38 x 1 ) + ( 32 x 256 ) = 8230 - calculating the decimal 8230
' Using hexadecimal as the final column numbers, we would have 20 26 , likely seen in literature as U+2026
Study that sketch and it should all look reasonable. In words: The fundamental unit previously was a Byte, 8 Bits. We could get from 0 – 255 with that. Using 2 Bytes one possibility could be to add the numbers giving 0 to 510, but defining the two numbers as in a base system ( 256 in this case ) gives us a much wider range 0 to (255+(256x255))=65535
(By the way, I never heard of this 2 column base 256 idea before in any explanation. I just noticed that it is that, the UTF-16 2-Byte LE encoding.)
Typically in an explanation we might see this as written
38 32 ( or in hexadecimal notation 20 26 )
More likely, however, an explanation tends to not take any larger code point number as example, considering something like the character A, which would look like
65 00 ( or in hexadecimal notation 42 00 )
It then can misleadingly talk about the unused 00 separating characters, which only appears so for the lower code points.
The story again with a few more technical details
There seems to be some tradition of adding something before the 4 digit Unicode UTF-16 2-Byte number , such as U+, to give an indication that we are in a Unicode encoding. In this case we would most likely be in hexadecimal, since the largest 4 digit hexadecimal in this number arrangement fits nicely, as 255 decimal is FF in hexadecimal, the largest 2 digit hexadecimal number. So the U+ means “Unicode” and the numbers are hexadecimal. U+0639 is the Arabic letter Ain. The English letter A would be U+0041. In the meantime we officially have a new name in place of character, a "grapheme" which is defined as the smallest functional unit of a writing system, and assigned a magic number by the Unicode consortium. This magic number is called a code point. In fact a more recent development means that a combination of code points can define a final thing, for example, a basic shape had a code point and then one of a few other code points might define its colour. (The final thing would be called a Glyphs, whereas the concept of graphemes is abstract and similar to the notion in computing of a character. By comparison, a specific shape that represents any particular grapheme in a given typeface is called a glyph).
This largest number we might recognise in literature for the 4 digit Unicode UTF-16 2-Byte as looking something like
U+FFFF
In the literature, the number we considered, decimal 8230, would likely be given as something like U+2026
Hello in Unicode, corresponds to these five code points:
U+0048 U+0065 U+006C U+006C U+006F.
This is still just a bunch of code points. Numbers, really. We haven’t yet said anything about how to store this in memory
That’s where encodings come/ came in.
The first idea was based on 2 Bytes, but as we have noted other encodings are available.
The Single Most Important Fact About Encodings - . It does not make sense to have a string without knowing what encoding it uses.
Generical Term(s), mismomers and the such __ W
We are predominantly involved with Microsoft stuff, and whether "ANSI" or "UNICODE", the terms are and likely will always be used loosely and mostly technically incorrectly. With Unicode the misuse is less from historical mismomers, and more often the word Unicode is misused when referring to the Unicode Encoding used. Microsoft are less precise in things Unicode, often having a general term W for wide when distinguishing from "ANSI". This is of course not without its confusion in its broader sense due to the UTF-8 encoding being as "wide" as "ANSI". However within Microsoft itself the "W" version usually refers to their UTF-16.
We will try in the next post to makes some definitions to help perpetuate and encourage the awareness of the naming impreciseness
Ref
https://www.joelonsoftware.com/2003/...ts-no-excuses/
https://web.archive.org/web/20230321...p?f=30&t=38460 , https://web.archive.org/web/20230321...38460&start=20
https://decodeunicode.org/en/u+10000 , https://eileenslounge.com/viewtopic....297518#p297518
https://web.archive.org/web/20201201...t/tips/varptr/
Unicode (WUnicorn) and (Microsoft) "ANSI" (AASI)
Generical Termsinology relating to computer storage of characters
Xmas New Year 2024 2025
Character sets
The last few posts demonstrate clearly that there is plenty of scope for misuse, poor use, misunderstanding, mismomers, etc., in the use of the terms related to how computers handle characters in memory. It is difficult to move forward in discussions if one even tries to be more accurate and precise, since the extra words piss some people off so much that they at best don't want to read further, and at worst want to kill you.
I would suggest the best compromise would be to have some general terms to help give at least some awareness of the more accurate issues behind, historical and otherwise. These terms can therefore be referenced here for a better understanding and better advancement of mankind.
** AASI
AASI is equivalent to "ANSI", where "ANSI" would be likely to be used under the correct historical reference misnomer Perpetration, and this new term AASI could be thought of as a generical term for what people are most likely be referring to as goings-on in a computer either with, or arising from, character processes involved mostly with the first typical 256 (0-255) characters. More likely in any conversation, we would be more interested in, or we would be interested in differences in, the second half.
** WUnicorn
This will be used as a general term for all things "Unicode" or Unicode but centred around, or with more emphasis on, either the "Wide" equivalent of an "ANSI thing" and/or the typical Microsoft UTF-16 (LE) Unicode Encoding
It would be highly recommended if landing here to briefly read the above posts on this page 2
https://www.excelfox.com/forum/showt...age2#post17877
https://www.excelfox.com/forum/showt...age2#post17878
https://www.excelfox.com/forum/showt...age2#post17879
https://www.excelfox.com/forum/showt...age2#post17880
https://www.excelfox.com/forum/showt...age2#post24946
Generical Termsinology 4 experiment types
Terminology used in discussing experiments centred around VB Strings , in particular when investigating the string parameters in VB(A) win32 API functions
Just the basic 4 forms of VB(A) win32 API functions are detailed here. The significance is the main subject of most of the musings around the last dozen or two postings here.
Straight AASI
The Declareing line is used in the form most often given in VB or VBA literature whereby :
_ string parameters are given As String. ( Further more we note that most often the full parameter would read
ByVal MyStrvariable As String
, but not exclusively so, - there may occasionally be a ByRef instead .)
_ Most typically the win 32 API function given will have a trailing A in it's name, pseudo like MyWin32APIFunctionA
"Half way house" AASI (HWH ASII)
( The terminology arises here from a knowledge of the typical solution that almost always works to get over problems where characters, predominantly those with higher code points, ( > 255 ), may somehow give problems. This solution, just very briefly given here, involves usually 2 adjustments to the Straight AASI
_ In the Declareing line, the typically given As String is replaced by As Lo_____, where Lo_____ may be a Long type such as Long or LongPtr )
The "Half way house" AASI (HWH ASII) replaces the string parameters given As String with As Long or As LongPtr
Full WUnicorn
The two main characteristics of this solution is
_The (Microsoft) "W" version of a Win32 API Function, which most usually is available is used. This usually looks similar to the AASI version, but with a trailing W in place of the trailing A , pseudo like MyWin32APIFunctionW (This is often referred to under imprecise approximate mismomer convention as the Unicode version when distinguishing or in comparison speaking using the full historical mismomer reference "ANSI" or ANSI for the "A" version
_ Any string parameters given by As String are replaced with As Long or As LongPtr
Half way house WUnicorn (HWHWU)
This is the Full WUnicorn version but with any string parameters As String
** Termsinology Ratified by order of
Alan
Hof
Xmas / New Year, 2024 2025
1 Attachment(s)
Unicode (WUnicorn) and (Microsoft) "ANSI" (AASI)
Chr ( x ) , x = 0 to 255 and the common low end AASI character tables.
(Window Code pages)
aka Interactions with AASI and WUnicorns at the bottom bit
The previous posts have shown and discussed that we have these two things to consider, AASI and WUnicorns.
Further more, the cross over point and associated interactions with the two at the bottom we will go on to see are not so well defined and a bit blurred. Here we will discuss some background issues to help make things clearer later.
The term "Unicode character" is quite a correct and well defined term, at least to some extent, since Unicode can be used as a term related to a single unique list of characters: A single unique list of characters that is pretty dammed massive already and likely to get bigger as long as man exists on this planet. We are mainly concerning ourselves with the 0 – 65535 range
OK so that is WUnicorn, as I call it. On the other AASI end, as we have discussed many times, a term such as "ANSI character" is a slightly more vague historical mismomer thing: It does give some indication of what we are likely to be talking about, and that may in end effect be a character list involving characters mostly "down the bottom" around the 0 – 255 Unicode character list area, but it might have the odd few characters in the Unicode character list up to about 400, and similarly may be missing a few under 256 in the Unicode character list.
Let's go through that in a bit more detail
Get your bottom end Chr(x) List
First things first. Make sure you know what characters your current computer has in its AASI character list. It will be similar to ChrW(x) , with x = 0 to 255, but unlikely exactly the same and this might cause awkward issues later if you are unaware of the differences, so it is a good idea to get this list at an early stage. Remember also that it may be slightly different list for different computers.
The simplest way, Rem 1 in the coding below, is to get this list is to simply loop for x = 0 to 255 and paste out Chr(x) as in the next simply coding. While we are at it we will get our windows code page number then go on to check our list with any published table for that windows code page number: Remember you may get slightly different results on your computer
In Rem 2 I obtain the windows code page. So far I have seen 1250 and 1252. I researched the internet using those numbers and obtained the appropriate lists which amongst other things are included the table examples below
Code:
Option Explicit ' https://eileenslounge.com/viewtopic.php?p=324440#p324440
Private Declare Function GetACP Lib "kernel32" () As Long
Sub GetMyBottomEndAASIs() ' https://www.excelfox.com/forum/showthread.php/2824-Tests-Copying-Pasting-API-Cliipboard-issues-and-Rough-notes-on-Advanced-API-stuff?p=24947&viewfull=1#post24947
Rem 1 make my own list
Dim Ex As Long
For Ex = 0 To 255
Let Range("H" & Ex + 4 & "") = Ex
Let Range("I" & Ex + 4 & "") = Chr(Ex)
Next Ex
Let Rows("14:14").WrapText = False: Debug.Print Asc(Range("I" & 14 & "").Value) ' This line is a small bodge to remove any automatic wrap text feature that may adjust the cell height seen when it recieves the line feed character ( Chr(10) vbLf ) : The Debug.Print is a quick check to make sure we still have the character there
Rem 2 get the windows code page number ( ' https://eileenslounge.com/viewtopic.php?p=324443#p324443 )
Dim WindowsCodePageNumber As Long
Let WindowsCodePageNumber = GetACP()
Debug.Print WindowsCodePageNumber ' so far I have seen 1250 and the most common one which is 1252
End Sub
Here I am just collecting a few lists of Chr(x) , with x from 0 to 255 , and typically alongside I will have a code page list. The significance has been touched on above, and will be discussed further later. Any reference names are for me to tie up list to some of my computers
' https://i.postimg.cc/Kj0YvV3Z/Windows-CPage-KB1252.jpg
' https://i.postimg.cc/BZVgVzkc/Window...ungary1250.jpg
Code:
Central Europe (my Hungary SSD2) More typical (Western Europe)
x Chr(x) Win1250 MS-DOS852 MS-DOS852 x Chr(x) Win1252 MS-DOS850
0 ␀ 0 NUL
1 ␁ 1 SOH
2 ␂ 2 STX
3 ␃ 3 ETX
4 ␄ 4 EOT
5 ␅ 5 ENQ
6 ␆ 6 ACK
7 ␇ 7 BEL
8 ␈ 8 BS
9 ␉ 9 HT
10 ␊ 10 LF
11 ␋ 11 VT
12 ␌ 12 FF
13 ␍ 13 CR
14 ␎ 14 SO
15 ␏ 15 SI
16 ␐ 16 DLE
17 ␑ 17 DC1
18 ␒ 18 DC2
19 ␓ 19 DC3
20 ␔ 20 DC4
21 ␕ 21 NAK
22 ␖ 22 SYN
23 ␗ 23 ETB
24 ␘ 24 CAN
25 ␙ 25 EM
26 ␚ 26 SUB
27 ␛ 27 ESC
28 ␜ 28 FS
29 ␝ 29 GS
30 ␞ 30 RS
31 ¬ ␟ 31 ¬ US
32 ␠ 32 SP
33 ! ! ! 33 ! ! !
34 " " " 34 " " "
35 # # # 35 # # #
36 $ $ $ 36 $ $ $
37 % % % 37 % % %
38 & & & 38 & & &
39 ' \' 39 ' \
40 ( ( ( 40 ( ( (
41 ) ) ) 41 ) ) )
42 * * * 42 * * *
43 + + + 43 + + +
44 , , , 44 , , ,
45 - - - 45 - - -
46 . . . 46 . . .
47 / / / 47 / / /
48 0 0 0 48 0 0 0
49 1 1 1 49 1 1 1
50 2 2 2 50 2 2 2
51 3 3 3 51 3 3 3
52 4 4 4 52 4 4 4
53 5 5 5 53 5 5 5
54 6 6 6 54 6 6 6
55 7 7 7 55 7 7 7
56 8 8 8 56 8 8 8
57 9 9 9 57 9 9 9
58 : : : 58 : : :
59 ; ; ; 59 ; ; ;
60 < < < 60 < < <
61 = = = 61 = = =
62 > > > 62 > > >
63 ? ? ? 63 ? ? ?
64 @ @ @ 64 @ @ @
65 A A A 65 A A A
66 B B B 66 B B B
67 C C C 67 C C C
68 D D D 68 D D D
69 E E E 69 E E E
70 F F F 70 F F F
71 G G G 71 G G G
72 H H H 72 H H H
73 I I I 73 I I I
74 J J J 74 J J J
75 K K K 75 K K K
76 L L L 76 L L L
77 M M M 77 M M M
78 N N N 78 N N N
79 O O O 79 O O O
80 P P P 80 P P P
81 Q Q Q 81 Q Q Q
82 R R R 82 R R R
83 S S S 83 S S S
84 T T T 84 T T T
85 U U U 85 U U U
86 V V V 86 V V V
87 W W W 87 W W W
88 X X X 88 X X X
89 Y Y Y 89 Y Y Y
90 Z Z Z 90 Z Z Z
91 [ [ [ 91 [ [ [
92 \ \ \ 92 \ \ \
93 ] ] ] 93 ] ] ]
94 ^ ^ ^ 94 ^ ^ ^
95 _ _ _ 95 _ _ _
96 ` ` ` 96 ` ` `
97 a a a 97 a a a
98 b b b 98 b b b
99 c c c 99 c c c
100 d d d 100 d d d
101 e e e 101 e e e
102 f f f 102 f f f
103 g g g 103 g g g
104 h h h 104 h h h
105 i i i 105 i i i
106 j j j 106 j j j
107 k k k 107 k k k
108 l l l 108 l l l
109 m m m 109 m m m
110 n n n 110 n n n
111 o o o 111 o o o
112 p p p 112 p p p
113 q q q 113 q q q
114 r r r 114 r r r
115 s s s 115 s s s
116 t t t 116 t t t
117 u u u 117 u u u
118 v v v 118 v v v
119 w w w 119 w w w
120 x x x 120 x x x
121 y y y 121 y y y
122 z z z 122 z z z
123 { { { 123 { { {
124 | | | 124 | | |
125 } } } 125 } } }
126 ~ ~ ~ 126 ~ ~ ~
127 ␡ 127 DEL
128 € € Ç € 128 € € Ç
129 ü 129 ü
130 ‚ ‚ é ‚ 130 ‚ ‚ é
131 â ƒ 131 ƒ ƒ â
132 „ „ ä „ 132 „ „ ä
133 … … ů … 133 … … à
134 † † ć † 134 † † å
135 ‡ ‡ ç ‡ 135 ‡ ‡ ç
136 ł ˆ 136 ˆ ˆ ê
137 ‰ ‰ ë ‰ 137 ‰ ‰ ë
138 Š Š Ő Š 138 Š Š è
139 ‹ ‹ ő ‹ 139 ‹ ‹ ï
140 Ś Ś î Œ 140 Œ Œ î
141 Ť Ť Ź 141 ì
142 Ž Ž Ä Ž 142 Ž Ž Ä
143 Ź Ź Ć 143 Å
144 É 144 É
145 ‘ ‘ Ĺ ‘ 145 ‘ ‘ æ
146 ’ ’ ĺ ’ 146 ’ ’ Æ
147 “ “ ô “ 147 “ “ ô
148 ” ” ö ” 148 ” ” ö
149 • • Ľ • 149 • • ò
150 – – ľ – 150 – – û
151 — — Ś — 151 — — ù
152 ś ˜ 152 ˜ ˜ ÿ
153 ™ ™ Ö ™ 153 ™ ™ Ö
154 š š Ü š 154 š š Ü
155 › › Ť › 155 › › ø
156 ś ś ť œ 156 œ œ £
157 ť ť Ł 157 Ø
158 ž ž × ž 158 ž ž ×
159 ź ź č Ÿ 159 Ÿ Ÿ ƒ
160 á 160 NBSP á
161 ˇ ˇ í ¡ 161 ¡ ¡ í
162 ˘ ˘ ó ¢ 162 ¢ ¢ ó
163 Ł Ł ú £ 163 £ £ ú
164 ¤ ¤ Ą ¤ 164 ¤ ¤ ñ
165 Ą Ą ą ¥ 165 ¥ ¥ Ñ
166 ¦ ¦ Ž ¦ 166 ¦ ¦ ª
167 § § ž § 167 § § º
168 ¨ ¨ Ę ¨ 168 ¨ ¨ ¿
169 © © ę © 169 © © ®
170 Ş Ş ¬ ª 170 ª ª ¬
171 « « ź « 171 « « ½
172 ¬ ¬ Č ¬ 172 ¬ ¬ ¼
173 ¬ ¬ ş ¬ 173 ¬ ¬SHY ¡
174 ® ® « ® 174 ® ® «
175 Ż Ż » ¯ 175 ¯ ¯ »
176 ° ° ░ ° 176 ° ° ░
177 ± ± ▒ ± 177 ± ± ▒
178 ˛ ˛ ▓ ² 178 ² ² ▓
179 ł ł │ ³ 179 ³ ³ │
180 ´ ´ ┤ ´ 180 ´ ´ ┤
181 µ µ Á µ 181 µ µ Á
182 ¶ ¶ Â ¶ 182 ¶ ¶ Â
183 • • Ě • 183 • • À
184 ¸ ¸ Ş ¸ 184 ¸ ¸ ©
185 ą ą ╣ ¹ 185 ¹ ¹ ╣
186 ş ş ║ º 186 º º ║
187 » » ╗ » 187 » » ╗
188 Ľ Ľ ╝ ¼ 188 ¼ ¼ ╝
189 ˝ ˝ Ż ½ 189 ½ ½ ¢
190 ľ ľ ż ¾ 190 ¾ ¾ ¥
191 ż ż ┐ ¿ 191 ¿ ¿ ┐
192 Ŕ Ŕ └ À 192 À À └
193 Á Á ┴ Á 193 Á Á ┴
194 Â Â ┬ Â 194 Â Â ┬
195 Ă Ă ├ Ã 195 Ã Ã ├
196 Ä Ä ─ Ä 196 Ä Ä ─
197 Ĺ Ĺ ┼ Å 197 Å Å ┼
198 Ć Ć Ă Æ 198 Æ Æ ã
199 Ç Ç ă Ç 199 Ç Ç Ã
200 Č Č ╚ È 200 È È ╚
201 É É ╔ É 201 É É ╔
202 Ę Ę ╩ Ê 202 Ê Ê ╩
203 Ë Ë ╦ Ë 203 Ë Ë ╦
204 Ě Ě ╠ Ì 204 Ì Ì ╠
205 Í Í ═ Í 205 Í Í ═
206 Î Î ╬ Î 206 Î Î ╬
207 Ď Ď ¤ Ï 207 Ï Ï ¤
208 Đ Đ đ Ð 208 Ð Ð ð
209 Ń Ń Đ Ñ 209 Ñ Ñ Ð
210 Ň Ň Ď Ò 210 Ò Ò Ê
211 Ó Ó Ë Ó 211 Ó Ó Ë
212 Ô Ô ď Ô 212 Ô Ô È
213 Ő Ő Ň Õ 213 Õ Õ ı
214 Ö Ö Í Ö 214 Ö Ö Í
215 × × Î × 215 × × Î
216 Ř Ř ě Ø 216 Ø Ø Ï
217 Ů Ů ┘ Ù 217 Ù Ù ┘
218 Ú Ú ┌ Ú 218 Ú Ú ┌
219 Ű Ű █ Û 219 Û Û █
220 Ü Ü ▄ Ü 220 Ü Ü ▄
221 Ý Ý Ţ Ý 221 Ý Ý ¦
222 Ţ Ţ Ů Þ 222 Þ Þ Ì
223 ß ß ▀ ß 223 ß ß ▀
224 ŕ ŕ Ó à 224 à à Ó
225 á á ß á 225 á á ß
226 â â Ô â 226 â â Ô
227 ă ă Ń ã 227 ã ã Ò
228 ä ä ń ä 228 ä ä õ
229 ĺ ĺ ň å 229 å å Õ
230 ć ć Š æ 230 æ æ µ
231 ç ç š ç 231 ç ç þ
232 č č Ŕ è 232 è è Þ
233 é é Ú é 233 é é Ú
234 ę ę ŕ ê 234 ê ê Û
235 ë ë Ű ë 235 ë ë Ù
236 ě ě ý ì 236 ì ì ý
237 í í Ý í 237 í í Ý
238 î î ţ î 238 î î ¯
239 ď ď ´ ï 239 ï ï ´
240 đ đ ¬ ð 240 ð ð ¬
241 ń ń ˝ ñ 241 ñ ñ ±
242 ň ň ˛ ò 242 ò ò ‗
243 ó ó ˇ ó 243 ó ó ¾
244 ô ô ˘ ô 244 ô ô ¶
245 ő ő § õ 245 õ õ §
246 ö ö ÷ ö 246 ö ö ÷
247 ÷ ÷ ¸ ÷ 247 ÷ ÷ ¸
248 ř ř ° ø 248 ø ø °
249 ů ů ¨ ù 249 ù ù ¨
250 ú ú ˙ ú 250 ú ú •
251 ű ű ű û 251 û û ¹
252 ü ü Ř ü 252 ü ü ³
253 ý ý ř ý 253 ý ý ²
254 ţ ţ ■ þ 254 þ þ ■
255 ˙ ˙ ÿ 255 ÿ ÿ
https://i.postimg.cc/NFH21SfQ/Window...OS-852-850.jpg
https://i.postimg.cc/yNJJ4x2L/Window...OS-852-850.jpg
https://i.postimg.cc/pV4SQ6J4/Windows-1250-1252.jpg
https://i.postimg.cc/B6y1P43h/Windows-1250-1252.jpg
https://i.postimg.cc/Hj1c3zVX/Windows-1250-1252.jpg
https://i.postimg.cc/44mM9gVp/Windows-1250-1252.jpg
ISO-8859-1 :- The main difference to Windows 1252 seems to be that 128 to 159 are not used in ISO-8859-1