Jump to content
Sign in to follow this  
SmOke_N

Ini+Ex Functions - exceed 32kb limit

Recommended Posts

SmOke_N's and kickarse's both contain a bug - $aValue may not always be an array, I would advise modifying it to:

If IsArray($aValue) Then $aSection[$iCC + 1][1] = $aValue[$iCC]

Ian

You're mistaken. It's created locally and it's not a conditional creation.

Edit:

Although:

Local $aKey = StringRegExp(@LF & $aData[0], '\n\s*(.*?)\s*=', 3)
    Local $aValue = StringRegExp(@LF & $aData[0], '\n\s*.*?\s*=(.*?)\r', 3)

Could stand to be something like:

Local $aKey = StringRegExp(@LF & $aData[0], '\n\s*(.*?)\s*=', 3)
    If @error Then Return SetError(-1, 0, 0)
    Local $aValue = StringRegExp(@LF & $aData[0], '\n\s*.*?\s*=(.*?)\r', 3)
    If @error Then Return SetError(-2, 0, 0)

On top of that, looking at those regex's, they could all stand to be changed.

Edited by SmOke_N

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

On top of that, looking at those regex's, they could all stand to be changed.

hahahaha :unsure:

I should have taken the time to find which file I was parsing that caused the problem, sorry to not provide an example. I will revisit this problem tonight and post what caused the glitch. All I know is that it was repeatable until I checked for the status of $aValue....

Ian


My projects:

  • IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged.
  • INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them.
  • PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses.
  • Sync Tool - Folder sync tool with lots of real time information and several checking methods.
  • USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions.
  • Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent.
  • CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction.
  • MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app.
  • 2048 Game - My version of 2048, fun tile game.
  • Juice Lab - Ecigarette liquid making calculator.
  • Data Protector - Secure notes to save sensitive information.
  • VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive.
  • Find in File - Searches files containing a specified phrase.

Share this post


Link to post
Share on other sites

OK, here is some more info for you, again sorry for being lazy and not doing this right away.

I have over 5000 INFs that I am parsing for my driver installation tool. In further testing to get some solid data for you, ONLY Realtek network drivers are doing this, and it has only been a few of the dozens of Realtek network drivers that I have. The offending INFs span NT5-NT6, X86-X64.

Using this snippet with the attached file will give you the error:

$man = _IniReadSectionEx(@DesktopDir & "\net8187Se.inf", 'Manufacturer')

Hopefully this will assist in understanding what is causing the issue.

Z:\Code\INFSniff\D35INFSniff.au3 (913) : ==> Subscript used with non-Array variable.:

$aSection[$iCC + 1][1] = $aValue[$iCC]

$aSection[$iCC + 1][1] = $aValue^ ERROR

Thanks!

Ian

net8187Se.rar


My projects:

  • IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged.
  • INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them.
  • PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses.
  • Sync Tool - Folder sync tool with lots of real time information and several checking methods.
  • USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions.
  • Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent.
  • CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction.
  • MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app.
  • 2048 Game - My version of 2048, fun tile game.
  • Juice Lab - Ecigarette liquid making calculator.
  • Data Protector - Secure notes to save sensitive information.
  • VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive.
  • Find in File - Searches files containing a specified phrase.

Share this post


Link to post
Share on other sites

Like I said, they more than likely need a re-write.

To prevent your script from crashing like that ( there are more keys than there are values from your error ).

Replace:

Local $nUbound = UBound($aKey)

With:

Local $nUbound = UBound($aKey)
Local $nUboundVals = UBound($aValues)
If $nUBound <> $nUBoundVals Then Return SetError(-3, 0, 0)

Then check your @error when calling it. If it's -3, then you know you have more of one than the other.

I don't have time to play with this any time in the near future to assist you further unfortunately.


Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

Like I said, they more than likely need a re-write.

To prevent your script from crashing like that ( there are more keys than there are values from your error ).

Replace:

Local $nUbound = UBound($aKey)

With:

Local $nUbound = UBound($aKey)
Local $nUboundVals = UBound($aValues)
If $nUBound <> $nUBoundVals Then Return SetError(-3, 0, 0)

Then check your @error when calling it. If it's -3, then you know you have more of one than the other.

I don't have time to play with this any time in the near future to assist you further unfortunately.

No worries, I mostly just wanted to report it so it could be dealt with at some point and to help others avoid confusion. Thanks!

Ian


My projects:

  • IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged.
  • INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them.
  • PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses.
  • Sync Tool - Folder sync tool with lots of real time information and several checking methods.
  • USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions.
  • Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent.
  • CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction.
  • MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app.
  • 2048 Game - My version of 2048, fun tile game.
  • Juice Lab - Ecigarette liquid making calculator.
  • Data Protector - Secure notes to save sensitive information.
  • VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive.
  • Find in File - Searches files containing a specified phrase.

Share this post


Link to post
Share on other sites

Here, tried to optimize speed versus overly explicit cumbersome regex's specifically.

I also tried to take into account your INF files ( although, I didn't have those in mind when I did this originally ).

This one ( not like the others, but I'll probably get around to fixing those soon ( like in the next couple of years )) accepts a non-file string to be passed as well ( or at least I think it does! ).

Beat the crap out of this until you break it.

Func _IniReadSectionEx($h_file, $v_section)

    If Not $h_file Then Return SetError(-1, 0, 0)

    Local $f_exists = FileExists($h_file)

    Local $i_size, $a_secread

    If $f_exists Then
        $i_size = FileGetSize($h_file) / 1024

        ; if the file is smaller than 32kb, no need for regex
        If $i_size <= 31 Then
            $a_secread = IniReadSection($h_file, $v_section)
            If @error Then Return SetError(@error, 0, 0)
            If Not IsArray($a_secread) Then Return SetError(-2, 0, 0)
            Return $a_secread
        EndIf
    EndIf

    Local $s_fread
    If Not $f_exists Then
        ; string of data was passed
        $s_fread = $h_file
    Else
        $s_fread = FileRead($h_file)
    EndIf

    ; data between sections or till end of file
    Local $s_datapatt = "(?is)(?:^|\v)\h*\[\h*\Q" & $v_section & "\E\h*\]\h*\v+(.*?)(?:\z|\v\h*\[)"
    Local $a_data = StringRegExp($s_fread, $s_datapatt, 1)
    If @error Then Return SetError(-3, 0, 0)

    ; sanity check for inf people
    If Not StringInStr($a_data[0], "=", 1, 1) Then
        Return SetError(-4, 0, 0)
    EndIf

    ; since we stop at cr/lf then lets just split
    Local $a_lines
    If StringInStr($a_data[0], @CRLF, 1, 1) Then
        $a_lines = StringSplit(StringStripCR($a_data[0]), @LF)
    ElseIf StringInStr($a_data[0], @LF, 1, 1) Then
        $a_lines = StringSplit($a_data[0], @LF)
    Else
        $a_lines = StringSplit($a_data[0], @CR)
    EndIf

    ; prevent capturing commented keys
    Local $a_key, $a_value
    Local $s_keypatt = "\h*(?!;|#)(.*?)\h*="
    Local $s_valpatt = "\h*=\h*(.*)"
    Local $a_secs[$a_lines[0] + 1][2], $i_add = 0

    For $iline = 1 To $a_lines[0]

        $a_key = StringRegExp($a_lines[$iline], $s_keypatt, 1)
        If @error Then ContinueLoop

        $s_valpatt = "\h*=\h*(.*)"

        $a_value = StringRegExp($a_lines[$iline], $s_valpatt, 1)
        If @error Then ContinueLoop

        If StringLeft($a_key[0], 1) = '"' And StringRight($a_key[0], 1) = '"' Then
            $a_key[0] = StringTrimLeft(StringTrimRight($a_key[0], 1), 1)
        EndIf
        If StringLeft($a_value[0], 1) = '"' And StringRight($a_value[0], 1) = '"' Then
            $a_value[0] = StringTrimLeft(StringTrimRight($a_value[0], 1), 1)
        EndIf

        $i_add += 1
        $a_secs[$i_add][0] = $a_key[0]
        $a_secs[$i_add][1] = $a_value[0]
    Next

    If Not $i_add Then Return SetError(-5, 0, 0)

    ; cleanup return array
    ReDim $a_secs[$i_add + 1][2]
    $a_secs[0][0] = $i_add

    Return $a_secs
EndFunc

Let me know if it's working well and I'll put in the first post then.

Edited by SmOke_N

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

I don't have time to play with this any time in the near future to assist you further unfortunately.

HAHA, 4 hours later at 3AM you updated the code!!!! I do that too but had to laugh........

Anyhoo, the updated code finished successfully, and it helped dig out another 10,000 hardware IDs!! :>

And as far as the workout I gave your code, it parsed 5,862 INF files from 52 DriverPacks.net archives. The previous version with the inclusion of IsArray to prevent the crash found 266,461 HWIDs, the updated code found 276,255 HWIDs! I'd say it was well worth the effort, and THANK YOU!

I'll probably get around to fixing those soon ( like in the next couple of years ))

mm hmm, so tomorrow then, right? :unsure:

Thanks again

Ian


My projects:

  • IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged.
  • INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them.
  • PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses.
  • Sync Tool - Folder sync tool with lots of real time information and several checking methods.
  • USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions.
  • Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent.
  • CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction.
  • MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app.
  • 2048 Game - My version of 2048, fun tile game.
  • Juice Lab - Ecigarette liquid making calculator.
  • Data Protector - Secure notes to save sensitive information.
  • VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive.
  • Find in File - Searches files containing a specified phrase.

Share this post


Link to post
Share on other sites

Thanks llewxam,

First post updated with change, and changed function commented out.

The others I see, need a serious over-haul as well.

Edited by SmOke_N

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

Updated other functions early this morning, forgot to put them in.

They're now in first post. Be sure to test them if you have doubts or concerns.


Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

Me too!

I still use this funtion.

It is a pity that something easy like this (INI 32 KB limit) still hasn't been rewritten in Autoit.


Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Share this post


Link to post
Share on other sites

Saw this topic referenced today. Interesting read.

For a project I did a while ago I also had to update information larger than 32 Kb. The solution for me was a database.

Which made me think: wouldn't it be a (nicer) solution to have built-in SQLite functionality and do the setup in a db structure ? Still single-file, although of course not human-readable anymore. But realistically, do humans hand-modify 32 Kb .ini files ?

When I have time I will write a UDF for this.

Interesting topic.


I am just a hobby programmer, and nothing great to publish right now.

Share this post


Link to post
Share on other sites

AutoIt3 does include SQLite functions in the basic installation,


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

Saw this topic referenced today. Interesting read.

For a project I did a while ago I also had to update information larger than 32 Kb. The solution for me was a database.

Which made me think: wouldn't it be a (nicer) solution to have built-in SQLite functionality and do the setup in a db structure ? Still single-file, although of course not human-readable anymore. But realistically, do humans hand-modify 32 Kb .ini files ?

When I have time I will write a UDF for this.

Interesting topic.

AutoIt3 does include SQLite functions in the basic installation,

I prefer to use SQLite personally for most things.

But sometimes the simplicity of an INI file and its functions is all that someone really needs. And often, because of the simplicity, we let the size get away from us.

Many "new" users, will find it easier to use the INI files opposed to the SQLite db files, simply because of the needed level of understanding.

Many "older" users, like the idea of not having to provide multiple dependency files for their releases.

To each their own, this is what it is, it does what it does.


Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites

Portability & Simplicity are the great virtues of ini files.

And like basic Html files, but even simpler, it doesn't take much for newbs to grasp what is going on.

But realistically, do humans hand-modify 32 Kb .ini files ?

Well that depends on the content, but yes I'm sure they do ... providing it's quick & simple ... no tools other than Notepad required.

AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

Spoiler

What is the Secret Key? Life is like a Donut

If I put effort into communication, I expect you to read properly & fully, or just not comment.
Ignoring those who try to divert conversation with irrelevancies.
If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it.
I'm only big and bad, to those who have an over-active imagination.

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Share this post


Link to post
Share on other sites

<place holder>Just reviewed this, I have to use this for one of my projects - cannot wait to see it in action, thanks again SmOke_N</place holder>


All by me:

"Sometimes you have to go back to where you started, to get to where you want to go." 

"Everybody catches up with everyone, eventually" 

"As you teach others, you are really teaching yourself."

From my dad

"Do not worry about yesterday, as the only thing that you can control is tomorrow."

 

WindowsError.gif

WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF

AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send

StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2

AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit  Docs

SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF

Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language

Programming Tips

Excel Changes

ControlHover.UDF

GDI_Plus

Draw_On_Screen

GDI Basics

GDI_More_Basics

GDI Rotate

GDI Graph

GDI  CheckExistingItems

GDI Trajectory

Replace $ghGDIPDll with $__g_hGDIPDll

DLL 101?

Array via Object

GDI Swimlane

GDI Plus French 101 Site

GDI Examples UEZ

GDI Basic Clock

GDI Detection

Ternary operator

Share this post


Link to post
Share on other sites

I use the following modified function for a software (maybe useful for other users), but I have a help request to fix a minor limit in it: currently it is not possible to use the "[" character at the beginning of a key, because it is considered as the end of the section. It may be possible, improving the string in StringRegExp, to check if the line that starts with "[" character includes a "=" character or not (considering the line a section only if it doesn't include "=" character). Could you help me? thanks!

Func __IniReadSection($iFile, $iSection)
#cs
Description: Read A Section From A Standard Format INI File.
Returns: $Array[?] - Array Contains Unlimited Number Of Items.
[0][0] - Number Of Rows [3]

[A][0] - Key [Example]
[A][1] - Value [Test]
#ce
Local $iSize = FileGetSize($iFile) / 1024
If $iSize < 32 Then
Local $iRead = IniReadSection($iFile, $iSection)
If @error Then
Return SetError(@error, 0, 0)
EndIf
If IsArray($iRead) = 0 Then
Return SetError(-2, 0, 0)
EndIf
Return $iRead
EndIf

Local $iSplitKeyValue
Local $iFileRead = FileRead($iFile)
Local $iData = StringRegExp($iFileRead, "(?is)(?:^|\v)(?!;|#)\h*\[\h*\Q" & $iSection & "\E\h*\]\h*\v+(.*?)(?:\z|\v\h*\[)", 1)
If @error Then
Return SetError(1, 0, 0)
EndIf

Local $iLines = StringSplit(StringRegExpReplace($iData[0], @CRLF & "|" & @CR & "|" & @LF, @LF), @LF)
Local $iLeft, $iAdded = 0, $iSectionReturn[$iLines[0] + 1][2]
For $A = 1 To $iLines[0]
$iLeft = StringLeft(StringStripWS($iLines[$A], 8), 1)
If $iLeft == ";" Or $iLeft == "#" Then
ContinueLoop
EndIf

$iSplitKeyValue = StringSplit($iLines[$A], "=")
If $iSplitKeyValue[0] > 1 Then
$iAdded += 1
$iSectionReturn[$iAdded][0] = $iSplitKeyValue[1]
For $B = 2 To $iSplitKeyValue[0]
If $B > 2 Then
$iSectionReturn[$iAdded][1] &= "="
EndIf
$iSectionReturn[$iAdded][1] &= $iSplitKeyValue[$B]
Next
EndIf
Next
ReDim $iSectionReturn[$iAdded + 1][2]
$iSectionReturn[0][0] = $iAdded
Return $iSectionReturn
EndFunc ;==>__IniReadSection

SFTPEx, AutoCompleteInput_DateTimeStandard(), _ImageWriteResize()_GUIGraduallyHide(): some AutoIt functions.

Lupo PenSuite: all-in-one and completely free selection of portable programs and games.

DropIt: a personal assistant to automatically manage your files.

ArcThemALL!: application to multi-archive your files and folders.

Share this post


Link to post
Share on other sites

The ini file "standard" dictates that the bracket "[" is for section names only, if there's a bracket in a key or value then the ini file isn't adhering to the "standards".


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

Ok thanks, so I'll try with a workaround substituting that character.


SFTPEx, AutoCompleteInput_DateTimeStandard(), _ImageWriteResize()_GUIGraduallyHide(): some AutoIt functions.

Lupo PenSuite: all-in-one and completely free selection of portable programs and games.

DropIt: a personal assistant to automatically manage your files.

ArcThemALL!: application to multi-archive your files and folders.

Share this post


Link to post
Share on other sites

Ok thanks, so I'll try with a workaround substituting that character.

Yes, it would be advised.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...