IanABoys Posted October 31, 2012 Posted October 31, 2012 I'm having trouble with the StringMid function. I'm placing data on the clipboard and then searching that data for a specific string and extracting a part of the data relative to the search string. The problem is StringMid is returning the numeric value of the string, not the string itself. Any ideas? $data = ClipGet() ; Result "Other data then Patient ID: 12345678" ; Now search for a marker within that data $instr = StringInStr($data,"Patient ID :",2) ; Grab the data from just after the search string $data2 = StringMid($data,$instr+12,8) ;Gets 8 characters that just happens to be numbers and so call it a number when it's not MsgBox(1,"Info",$data2*2) ;Works, multiplies what should be a string by 2
Malkey Posted October 31, 2012 Posted October 31, 2012 On 10/31/2012 at 10:08 PM, 'IanABoys said: I'm having trouble with the StringMid function. I'm placing data on the clipboard and then searching that data for a specific string and extracting a part of the data relative to the search string. The problem is StringMid is returning the numeric value of the string, not the string itself. Any ideas? $data = ClipGet() ; Result "Other data then Patient ID: 12345678" ; Now search for a marker within that data $instr = StringInStr($data,"Patient ID :",2) ; Grab the data from just after the search string $data2 = StringMid($data,$instr+12,8) ;Gets 8 characters that just happens to be numbers and so call it a number when it's not MsgBox(1,"Info",$data2*2) ;Works, multiplies what should be a string by 2 From the AutoIt help file:- Language Reference - Datatypes In AutoIt there is only one datatype called a Variant. A variant can contain numeric or string data and decides how to use the data depending on the situation it is being used in. For example, if you try and multiply two variants they will be treated as numbers, if you try and concatenate (join) two variants they will be treated as strings. Some examples: 10 * 20 equals the number 200 (* is used to multiply two numbers) 10 * "20" equals the number 200 "10" * "20" equals the number 200 10 & 20 equals the string "1020" (& is used to join strings) StringMid is returing a string. The "$data2*2" returns a number. Also, if "Other data then Patient ID: 12345678" is copied to clipboard and the script is run, then " $instr = StringInStr($data,"Patient ID :",2)" will not return the position of the substring because of the absence or presence of the space between "ID" and ":".
BrewManNH Posted October 31, 2012 Posted October 31, 2012 (edited) Your whole problem isn't the string conversion issue, it's because there's no match found so it gets you the 8 characters from 12th through 20th characters from the string, and not what you're looking for. It's all about the space in your search string that shouldn't be there. Edited October 31, 2012 by BrewManNH 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 GudeHow to ask questions the smart way! Reveal hidden contents 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
somdcomputerguy Posted November 1, 2012 Posted November 1, 2012 Is this what you're trying to get? #include <String.au3> $sVar = "Other data then Patient ID: 12345678" $aVar = _StringBetween($sVar, 'ID: ', '') MsgBox(0, '', $aVar[0] * 2) - Bruce /*somdcomputerguy */ If you change the way you look at things, the things you look at change.
guinness Posted November 1, 2012 Posted November 1, 2012 Or without using _StringBetween >> Local Const $sString = 'Other data then Patient ID: 12345678' Local $iNumber = Number(StringRegExpReplace($sString, 'D', '')) MsgBox(4096, '', $iNumber * 2) UDF List: Reveal hidden contents _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 parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
IanABoys Posted November 1, 2012 Author Posted November 1, 2012 Thanks, I'm a but new to this so I didn't realise the variable type were a bit loose compared to what I'm used to. All sorted.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now