Creates two .PBI files that you can include in your programs.
Thanks again to George Bisonte for showing me how to use maps efficiently
Code: Select all
; Format the passed heading to the correct field length for printing/copying to clipboard etc
Procedure.s FormatHeading(InString.s, FieldLen.i)
InStringLen.i = Len(InString.s)
SpaceLen.i = FieldLen.i - InStringLen.i
If SpaceLen.i > 1
OutString.s = InString.s + Space(SpaceLen.i)
Else
OutString.s = InString.s
EndIf
ProcedureReturn OutString.s
EndProcedure
;
FlagConstantsFile.i = CreateFile(#PB_Any, GetCurrentDirectory() + "Flags_Constants.pbi")
DataSectionFile.i = CreateFile(#PB_Any, GetCurrentDirectory() + "Flags_Datasection.pbi")
If FlagConstantsFile.i And DataSectionFile.i
WriteStringN(FlagConstantsFile.i, #Empty$)
; Write the data structure for the flags to the constants file
WriteStringN(FlagConstantsFile.i, ";--------------------------------------------------------------------------------------------------")
WriteStringN(FlagConstantsFile.i, "; Flags of the world")
WriteStringN(FlagConstantsFile.i, ";--------------------------------------------------------------------------------------------------")
WriteStringN(FlagConstantsFile.i, #Empty$)
WriteStringN(FlagConstantsFile.i, "Structure FlagData")
WriteStringN(FlagConstantsFile.i, " Image.i")
WriteStringN(FlagConstantsFile.i, " Name.s")
WriteStringN(FlagConstantsFile.i, " Address.i")
WriteStringN(FlagConstantsFile.i, "EndStructure")
WriteStringN(FlagConstantsFile.i, #Empty$)
WriteStringN(FlagConstantsFile.i, "Global NewMap Flag.FlagData()")
; Write these only to flag map data file
WriteStringN(FlagConstantsFile.i, #Empty$)
WriteStringN(FlagConstantsFile.i, ";--------------------------------------------------------------------------------------------------")
WriteStringN(FlagConstantsFile.i, "; Country flag map and keys")
WriteStringN(FlagConstantsFile.i, ";--------------------------------------------------------------------------------------------------")
WriteStringN(FlagConstantsFile.i, #Empty$)
;----------------------------------------------
; Write these only to the data section
;----------------------------------------------
WriteStringN(DataSectionFile.i, "DataSection")
WriteStringN(DataSectionFile.i, #Empty$)
WriteStringN(DataSectionFile.i, " ;----------------------------------------------------------------------------------------------------")
WriteStringN(DataSectionFile.i, " ; Country flag images")
WriteStringN(DataSectionFile.i, " ;----------------------------------------------------------------------------------------------------")
WriteStringN(DataSectionFile.i, #Empty$)
;----------------------------------------------
; Write the map variables and the data section at the same time
;----------------------------------------------
Restore Mapstart
While TempString.s <> "EndMapstart"
Read.s TempString.s
If TempString.s <> "EndMapstart"
TempStringLength.i = Len(TempString.s)
WriteStringN(FlagConstantsFile.i, FormatHeading("Flag(" + #DQUOTE$ + TempString.s + #DQUOTE$ + ")\Address", 62) + "= ?_flags_" + TempString.s)
WriteStringN(FlagConstantsFile.i, FormatHeading("Flag(" + #DQUOTE$ + TempString.s + #DQUOTE$ + ")\Image", 62) + "= CatchImage(#PB_Any, Flag(" + #DQUOTE$ + TempString.s + #DQUOTE$ + ")\Address, ?_flags_" + TempString.s + ")")
WriteStringN(FlagConstantsFile.i, FormatHeading("Flag(" + #DQUOTE$ + TempString.s + #DQUOTE$ + ")\Name", 62) + "= " + #DQUOTE$ + ReplaceString(TempString.s, "_", " ", #PB_String_NoCase, 1) + #DQUOTE$)
WriteStringN(FlagConstantsFile.i, #Empty$)
WriteStringN(DataSectionFile.i, Space(2) + "_" + TempString.s + ":" + Space(60 - Len(TempString.s)) + ":" + " IncludeBinary " + #DQUOTE$ + "Images\_16x16\_Flags\" + TempString.s + ".ico" + #DQUOTE$)
EndIf
Wend
; Write an end marker to the flag map key data
WriteStringN(FlagConstantsFile.i, #Empty$)
WriteStringN(FlagConstantsFile.i, ";--------------------------------------------------------------------------------------------------")
WriteStringN(FlagConstantsFile.i, "; End of Country flag map and keys")
WriteStringN(FlagConstantsFile.i, ";--------------------------------------------------------------------------------------------------")
WriteStringN(FlagConstantsFile.i, #Empty$)
; Write an end marker to the flag images in case you have other constants to add manually
WriteStringN(DataSectionFile.i, #Empty$)
WriteStringN(DataSectionFile.i, " ;----------------------------------------------------------------------------------------------------")
WriteStringN(DataSectionFile.i, " ; End of Country flag images")
WriteStringN(DataSectionFile.i, " ;----------------------------------------------------------------------------------------------------")
WriteStringN(DataSectionFile.i, #Empty$)
; Write the end of data section keyword
WriteStringN(DataSectionFile.i, "EndDataSection")
; Close all opened files
CloseFile(FlagConstantsFile.i)
CloseFile(DataSectionFile.i)
Else
Debug "Data section and flak map data created"
EndIf
End
;
DataSection
Mapstart:
Data.s "Afghanistan"
Data.s "Aland_Islands"
Data.s "Albania"
Data.s "Algeria"
Data.s "American_Samoa"
Data.s "Andorra"
Data.s "Angola"
Data.s "Anguilla"
Data.s "Antarctica"
Data.s "Antigua_and_Barbuda"
Data.s "Argentina"
Data.s "Armenia"
Data.s "Aruba"
Data.s "Australia"
Data.s "Austria"
Data.s "Azerbaijan"
Data.s "Bahamas"
Data.s "Bahrain"
Data.s "Bangladesh"
Data.s "Barbados"
Data.s "Belarus"
Data.s "Belgium"
Data.s "Belize"
Data.s "Benin"
Data.s "Bermuda"
Data.s "Bhutan"
Data.s "Bolivia"
Data.s "Bosnia_and_Herzegovina"
Data.s "Botswana"
Data.s "Bouvet_Island"
Data.s "Brazil"
Data.s "British_Indian_Ocean_Territory"
Data.s "Brunei_Darussalam"
Data.s "Bulgaria"
Data.s "Burkina_Faso"
Data.s "Burundi"
Data.s "Cambodia"
Data.s "Cameroon"
Data.s "Canada"
Data.s "Cape_Verde"
Data.s "Cayman_Islands"
Data.s "Central_African_Republic"
Data.s "Chad"
Data.s "Chile"
Data.s "China"
Data.s "Christmas_Island"
Data.s "Cocos"
Data.s "Colombia"
Data.s "Comoros"
Data.s "Congo"
Data.s "Cook_Islands"
Data.s "Costa_Rica"
Data.s "Cote_dIvoire"
Data.s "Croatia"
Data.s "Cuba"
Data.s "Cyprus"
Data.s "Czech_Republic"
Data.s "Denmark"
Data.s "Djibouti"
Data.s "Dominica"
Data.s "Dominican_Republic"
Data.s "Ecuador"
Data.s "Egypt"
Data.s "El_Salvador"
Data.s "Equatorial_Guinea"
Data.s "Eritrea"
Data.s "Estonia"
Data.s "Ethiopia"
Data.s "Falkland_Islands_Malvinas"
Data.s "Faroe_Islands"
Data.s "Fiji"
Data.s "Finland"
Data.s "France"
Data.s "French_Guiana"
Data.s "French_Polynesia"
Data.s "French_Southern_Territories"
Data.s "Gabon"
Data.s "Gambia"
Data.s "Georgia"
Data.s "Germany"
Data.s "Ghana"
Data.s "Gibraltar"
Data.s "Greece"
Data.s "Greenland"
Data.s "Grenada"
Data.s "Guadeloupe"
Data.s "Guam"
Data.s "Guatemala"
Data.s "Guernsey"
Data.s "Guinea"
Data.s "Guinea_Bissau"
Data.s "Guyana"
Data.s "Haiti"
Data.s "Heard_Island_and_McDonald_Islands"
Data.s "Holy_See_Vatican_City_State"
Data.s "Honduras"
Data.s "Hong_Kong"
Data.s "Hungary"
Data.s "Iceland"
Data.s "India"
Data.s "Indonesia"
Data.s "Iran"
Data.s "Iraq"
Data.s "Ireland"
Data.s "Isle_of_Man"
Data.s "Israel"
Data.s "Italy"
Data.s "Jamaica"
Data.s "Japan"
Data.s "Jersey"
Data.s "Jordan"
Data.s "Kazakhstan"
Data.s "Kenya"
Data.s "Kiribati"
Data.s "Korea"
Data.s "Kuwait"
Data.s "Kyrgyzstan"
Data.s "Lao_Peoples_Democratic_Republic"
Data.s "Latvia"
Data.s "Lebanon"
Data.s "Lesotho"
Data.s "Liberia"
Data.s "Libyan_Arab_Jamahiriya"
Data.s "Liechtenstein"
Data.s "Lithuania"
Data.s "Luxembourg"
Data.s "Macao"
Data.s "Macedonia"
Data.s "Madagascar"
Data.s "Malawi"
Data.s "Malaysia"
Data.s "Maldives"
Data.s "Mali"
Data.s "Malta"
Data.s "Marshall_Islands"
Data.s "Martinique"
Data.s "Mauritania"
Data.s "Mauritius"
Data.s "Mayotte"
Data.s "Mexico"
Data.s "Micronesia"
Data.s "Moldova"
Data.s "Monaco"
Data.s "Mongolia"
Data.s "Montenegro"
Data.s "Montserrat"
Data.s "Morocco"
Data.s "Mozambique"
Data.s "Myanmar"
Data.s "Namibia"
Data.s "Nauru"
Data.s "Nepal"
Data.s "Netherlands"
Data.s "Netherlands_Antilles"
Data.s "New_Caledonia"
Data.s "New_Zealand"
Data.s "Nicaragua"
Data.s "Niger"
Data.s "Nigeria"
Data.s "Niue"
Data.s "Norfolk_Island"
Data.s "Northern_Mariana_Islands"
Data.s "Norway"
Data.s "Oman"
Data.s "Pakistan"
Data.s "Palau"
Data.s "Palestinian_Territory_Occupied"
Data.s "Panama"
Data.s "Papua_New_Guinea"
Data.s "Paraguay"
Data.s "Peru"
Data.s "Philippines"
Data.s "Pitcairn"
Data.s "Poland"
Data.s "Portugal"
Data.s "Puerto_Rico"
Data.s "Qatar"
Data.s "Reunion"
Data.s "Romania"
Data.s "Russian_Federation"
Data.s "Rwanda"
Data.s "Saint_Barthelemy"
Data.s "Saint_Helena_Ascension_and_Tristan_da_Cunha"
Data.s "Saint_Kitts_and_Nevis"
Data.s "Saint_Lucia"
Data.s "Saint_Martin"
Data.s "Saint_Pierre_and_Miquelon"
Data.s "Saint_Vincent_and_the_Grenadines"
Data.s "Samoa"
Data.s "San_Marino"
Data.s "Sao_Tome_and_Principe"
Data.s "Saudi_Arabia"
Data.s "Senegal"
Data.s "Serbia"
Data.s "Seychelles"
Data.s "Sierra_Leone"
Data.s "Singapore"
Data.s "Slovakia"
Data.s "Slovenia"
Data.s "Solomon_Islands"
Data.s "Somalia"
Data.s "South_Africa"
Data.s "South_Georgia_and_the_South_Sandwich_Islands"
Data.s "Spain"
Data.s "Sri_Lanka"
Data.s "Sudan"
Data.s "Suriname"
Data.s "Svalbard_and_Jan_Mayen"
Data.s "Swaziland"
Data.s "Sweden"
Data.s "Switzerland"
Data.s "Syrian_Arab_Republic"
Data.s "Taiwan"
Data.s "Tajikistan"
Data.s "Tanzania"
Data.s "Thailand"
Data.s "Timor_Leste"
Data.s "Togo"
Data.s "Tokelau"
Data.s "Tonga"
Data.s "Trinidad_and_Tobago"
Data.s "Tunisia"
Data.s "Turkey"
Data.s "Turkmenistan"
Data.s "Turks_and_Caicos_Islands"
Data.s "Tuvalu"
Data.s "Uganda"
Data.s "Ukraine"
Data.s "United_Arab_Emirates"
Data.s "United_Kingdom"
Data.s "United_States"
Data.s "United_States_Minor_Outlying_Islands"
Data.s "Uruguay"
Data.s "Uzbekistan"
Data.s "Vanuatu"
Data.s "Venezuela"
Data.s "Viet_Nam"
Data.s "Virgin_Islands_British"
Data.s "Virgin_Islands_US"
Data.s "Wallis_and_Futuna"
Data.s "Western_Sahara"
Data.s "Yemen"
Data.s "Zambia"
Data.s "EndMapstart"
EndDataSection