Jump to content
damon

Using IniRead and Select Case

Recommended Posts

damon

@JLogan3o13 I apologize, I did not think of it that way.  I have attached all the code and the Ini File information.  Please let me know if I need to add anything else to help understand what is happening.  thank you.

 

 

 

Guys, I apologize in advance as I did not search for my answer before posting.  I just could not figure out a way to search that made since so I decided to go ahead and post my question.

 

Getting to it.

Background: this is being used to validate file names before moving to a new location.  though i have not included all the code, below is what i am having a problem with.

 I have an ini file that i am reading values from. Func ConfigDefineVars() -- I read the value of $ValidationRDA and everything is good then I set 

$CaseRDALocationCheck = '$SplitFile[$ValidationRDALocation]' <> $ValidationRDA

the code that will be used in the select case in Func FileSplitCount().  The problem i have is that even though the numbers = each other they are not recognizing as =.  

This is what i am getting in my log file i create.

2017-12-04 14:09:53 : RDA was 2403 should have been 2403:

If I move $SplitFile[$ValidationRDALocation] <> $ValidationRDA to the Case line under the function it works correctly.

 

I think this has to do with my use of ' ' around the '$SplitFile[$ValidationRDALocation]' but  i don't know what option i have in Func ConfigDefineVars I am not ready to define $SplitFile.  I have tried adding it to my Global Vars at the top of my script but that did not seem to help.

There will be more fail this is just the first one in the select case.

 

Any help or ideas would be greatly appreciated.

 

thanks,

Damon

Example of a filename used.

DWRSSD-37087-95-026.%-064.00-Tatum Family %-%-1230 Academy Rd-%-PERM-TRUE-2403.pdf

This file will fail on the 95, it should be 095.  The problem i am getting is with the 2403 it fails even though the ini file value ValidationRDA = 2403 

 

 

Ini File:

[SSD_FolderPaths]
pendingFolder=C:\Users\bg01152\Desktop\SSD Test\pending
reviewFolder=C:\Users\bg01152\Desktop\SSD Test\review
completedFolder=C:\Users\bg01152\Desktop\SSD Test\Completed
FileNetProperties=DocumentTitle,ZipCode,County,MapAndGroupID,ParcelID,PropertyOwner,Subdivision,StreetAddress,LotNumber,DocumentType,Approved,RDANumber
ValidationDocumentTitle=DWRSSD
ValidationDocumentTitleLocation=1
ValidationCountyCodeLocation=3
ValidationRDA=2403
ValidationRDALocation=12
Validation3=TRUE
Validation3Location=11
Validation4=PERM
Validation4Location=10

 

 

#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

;------------Global Vars ---------------------
Global $SplitFile, $aFileList, $FileLog, $dFolder, $sFolder, $cFolder, $ConfigFile, $t
Global $ValidationDocumentTitle, $ValidationDocumentTitleLocation, $ValidationCountyCodeLocation, $ValidationRDA
Global $ValidationRDALocation, $Validation3, $Validation3Location, $Validation4, $Validation4Location, $FileNetPropertiesSplit
Global $CaseCountyCheck, $CaseRDALocationCheck, $CaseValidation3LocationCheck, $CaseValidation4LocationCheck, $SplitFile


;;--------------------------------Check and Read Config files--------------------------------
        $SysConfigFile = @ScriptDir & "\SysConfig.ini"
            ;----------------PreCheck for Config File--------------
                If FileExists ($SysConfigFile) <> 1 Then
                    Exit
                EndIf
            ;----------------End PreCheck--------------------------
    $FileNetEXE = @ScriptDir & "\" & IniRead ($SysConfigFile, "FileNetUploader","FileName","")
    $delimiter = IniRead ($SysConfigFile, "FileInformation", "Delimiter","")
    $Filter = IniRead ($SysConfigFile, "FileInformation", "Filter", "")
        $ConfigFile = @ScriptDir & "\Config.ini"
            ;----------------PreCheck for Config File--------------
                If FileExists ($ConfigFile) <> 1 Then
                    Exit
                EndIf
            ;----------------End PreCheck--------------------------
;;--------------------------------------------------------------------------------------------
$Sections = IniReadSectionNames ($ConfigFile)
;MsgBox (0,"test", $Sections[0] & @CRLF & $Sections[1] & @CRLF & $Sections[2] & @CRLF & $Sections[3] & @CRLF & $Sections[4]);TESTING ONLY - DELETE WHEN DONE
$p = 0
Do
    $t = 0 ;used for precheck
    $p = $p + 1
    ConfigDefineVars($Sections[$p])

    ;MsgBox(0,"ConfigDefineVars", $sFolder & @CRLF & $dFolder & @CRLF & $cFolder);TESTING ONLY - DELETE WHEN DONE
    PreCheck($dFolder, $sFolder, $cFolder) ;Runs a Pre-check to make sure folder structure exists before running the program
    If $t = 0 Then
        ;MsgBox(0,"PreCheck Run", "Running next functions");TESTING ONLY - DELETE WHEN DONE
        ListArray($sFolder, $Filter) ;Puts File Names in String Array
        ;_ArrayDisplay ($aFileList, $Sections[$p])
        If $t = 0 Then

            FileSplitCount($dFolder, $aFileList) ;Takes filename String Array and splits by $delimiter
            ;MsgBox(0,"PreCheck Run2", "Running split function");TESTING ONLY - DELETE WHEN DONE
        Else
            ;MsgBox(0,"PreCheck Run2", "Skipping split function");TESTING ONLY - DELETE WHEN DONE
        EndIf
    Else
        ;MsgBox(0,"PreCheck Run", "Skipping next functions");TESTING ONLY - DELETE WHEN DONE
    EndIf
Until $p = $Sections[0]


ExitScript() ;Exit script Function



Func ConfigDefineVars($SectionsNum);Defines Variables from config file Sections
    $sFolder = IniRead ($ConfigFile, $SectionsNum, "pendingFolder","") ;Pending Folder, Folder that is awaiting the process
    $dFolder = IniRead ($ConfigFile, $SectionsNum, "reviewFolder","") ;Review Folder, Files that did not pass validation check and division needs to review
    $cFolder = IniRead ($ConfigFile, $SectionsNum, "completedFolder","") ;Completed Folder, Once process is completed this would be location files get moved to
    $FileNetProperties = IniRead ($ConfigFile, $SectionsNum, "FileNetProperties","")
    $FileNetPropertiesSplit = StringSplit ($FileNetProperties,",")
    $ValidationDocumentTitle = IniRead ($ConfigFile, $SectionsNum, "ValidationDocumentTitle","")
    $ValidationDocumentTitleLocation = IniRead ($ConfigFile, $SectionsNum, "ValidationDocumentTitleLocation","")
    $ValidationCountyCodeLocation = IniRead ($ConfigFile, $SectionsNum, "ValidationCountyCodeLocation","")
    $ValidationRDA = IniRead ($ConfigFile, $SectionsNum, "ValidationRDA","")
    $ValidationRDALocation = IniRead ($ConfigFile, $SectionsNum, "ValidationRDALocation","")
    $Validation3 = IniRead ($ConfigFile, $SectionsNum, "Validation3","")
    $Validation3Location = IniRead ($ConfigFile, $SectionsNum, "Validation3Location","")
    $Validation4 = IniRead ($ConfigFile, $SectionsNum, "Validation4","")
    $Validation4Location = IniRead ($ConfigFile, $SectionsNum, "Validation4Location","")


                If $ValidationCountyCodeLocation = 999 Then
                    $CaseCountyCheck = 1 <> 1
                Else
                    ;MsgBox (0,"test of county code", "location = " &$ValidationCountyCodeLocation)
                    $CaseCountyCheck = StringLen('$SplitFile[$ValidationCountyCodeLocation]') <> 3 ; Checks for 3 digit County Code
                EndIf

                If $ValidationRDALocation = 999 Then
                    $CaseRDALocationCheck = 1 <> 1
                Else
                    $CaseRDALocationCheck = '$SplitFile[$ValidationRDALocation]' <> $ValidationRDA ; Checks for 4 Digit RDA
                EndIf

                If $Validation3Location = 999 Then
                    $CaseValidation3LocationCheck = 1 <> 1
                Else
                    $CaseValidation3LocationCheck = '$SplitFile[$Validation3Location]' <> $Validation3 ; Checks that Approved = True
                EndIf

                If $Validation4Location = 999 Then
                    $CaseValidation4LocationCheck = 1 <> 1
                Else
                    $CaseValidation3LocationCheck = '$SplitFile[$Validation4Location]' <> $Validation4 ; Checks that Document Type = PERM
                EndIf


EndFunc
Func ValidationCheck ($check1)
    $blank = StringLen ($check1)
    If $check1 Then
        EndIf
EndFunc
Func PreCheck($dFolder, $sFolder, $cFolder)
    ;----------------PreCheck for Destination Folder--------------
        If FileExists ($dFolder) <> 1 Then
            $t = 1
            Return
        Else
            $FileLog = FileOpen($dFolder & "\FileLog.log", 1)
        EndIf
    ;----------------End PreCheck--------------------------
    ;----------------PreCheck for Source Folder--------------
        If FileExists ($sFolder) <> 1 Then
            _FileWriteLog($FileLog, "Path to Pending Folder -- " & $sFolder & " -- does not exist")
            $t = 1
            Return
        EndIf
    ;----------------End PreCheck--------------------------
    ;----------------PreCheck for Completed Folder---------
        If FileExists ($cFolder) <> 1 Then
            _FileWriteLog($FileLog, "Path to Completed Folder -- " & $cFolder & " -- does not exist")
            $t = 1
            Return
        EndIf
    ;----------------End PreCheck--------------------------
EndFunc
Func ListArray($sFolder, $Filter)
    $aFileList = _FileListToArray($sFolder, $Filter, 1) ;Create an array of files from the source folder filtering by filetype
                                                        ;in the config.ini files for the specified section
    If @error = 1 Then
        ;MsgBox($MB_SYSTEMMODAL, "", "Path was invalid.")
        _FileWriteLog($FileLog, "Path to File(s) is Invalid")
        $t = 1
        Return
    EndIf
    If @error = 4 Then
        ;MsgBox($MB_SYSTEMMODAL, "", "No file(s) were found.")
        _FileWriteLog($FileLog, "No File(s) were found, exiting.")
        $t = 1
        Return
    EndIf
EndFunc   ;==>ListArray

 

 

 

 

Edited by damon
Needed to Add more information to get support.

It always amazes me how one little thing can cause so much havoc

Share this post


Link to post
Share on other sites
JLogan3o13

@damon I will offer that you are asking a lot when requesting support on a script where you don't post any runnable code, the format of your INI files, content of associated files, etc. and instead leave everyone to guess at what you're doing exactly. Even a small reproducer that shows the issue, if you are unable to post all of the code, is preferable to having to guess our way through non-running functions with mystery variables.


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites
careca

Still not runnable code. Upload an ini, and code that runs and jams on the issue you have.

What is this line supposed to do?

$CaseRDALocationCheck = '$SplitFile[$ValidationRDALocation]' <> $ValidationRDA

 


Spoiler

Paster - Main function is to paste text, but has more functions. (No longer mantained, switched to String Trigger)

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Share this post


Link to post
Share on other sites
damon

@careca I thought i had copied all the code, may fault.  the problem section is what did not even copy.  sorry.  

I did forget i divided the ini file into two different files so that I have a system ini and a user ini. 

This line you referred to above and these others is the problem i am having.  I realize i am trying to call $SplitFile array before it has been defined.  not trying to call the code but i need it set to a var so i can call it in the Select/Case in Func FileSplitCount().

$CaseCountyCheck = 'StringLen($SplitFile[$ValidationCountyCodeLocation]) <> 3' ; Checks for 3 digit County Code
                    $CaseRDALocationCheck = '$SplitFile[$ValidationRDALocation] <> $ValidationRDA' ; Checks for 4 Digit RDA
                    $CaseValidation3LocationCheck = '$SplitFile[$Validation3Location] <> $Validation3' 
                    $CaseValidation3LocationCheck = '$SplitFile[$Validation4Location] <> $Validation4'

Another thing to note.

In the Config.ini there are 3 directories.  you will need to have 3 folders created for the script to run and be pointed to.  Using just a blank text file and name it 

DWRSSD-37087-95-026.%-064.00-Tatum Family %-%-1230 Academy Rd-%-PERM-TRUE-2403.pdf

Make sure this file is in the Pending folder.  The script should move it to the review folder when ran and the error log file should say it was moved because the file failed from not being a 3 digit county code.  This file will fail on the 95, it should be 095.  The problem i am getting is with the 2403 it fails even though the ini file value ValidationRDA = 2403 

 

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=C:\Users\bg01152\Desktop\Split Program\Split no Upload\Split-NoUpload.Exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.14.2
    Author:         Damon Pence

    Script Function:
    Files is used for File Pickup process.  This file has (2) ini files used for configurations.
    SysConfig - used for primary functions of program
    Config - Used to configure path and other options for each division

#ce ----------------------------------------------------------------------------
#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>

;------------Global Vars ---------------------
Global $SplitFile, $aFileList, $FileLog, $dFolder, $sFolder, $cFolder, $ConfigFile, $t
Global $ValidationDocumentTitle, $ValidationDocumentTitleLocation, $ValidationCountyCodeLocation, $ValidationRDA
Global $ValidationRDALocation, $Validation3, $Validation3Location, $Validation4, $Validation4Location, $FileNetPropertiesSplit
Global $CaseCountyCheck, $CaseRDALocationCheck, $CaseValidation3LocationCheck, $CaseValidation4LocationCheck, $SplitFile


;;--------------------------------Check and Read Config files--------------------------------
        $SysConfigFile = @ScriptDir & "\SysConfig.ini"
            ;----------------PreCheck for Config File--------------
                If FileExists ($SysConfigFile) <> 1 Then
                    Exit
                EndIf
            ;----------------End PreCheck--------------------------
    $FileNetEXE = @ScriptDir & "\" & IniRead ($SysConfigFile, "FileNetUploader","FileName","")
    $delimiter = IniRead ($SysConfigFile, "FileInformation", "Delimiter","")
    $Filter = IniRead ($SysConfigFile, "FileInformation", "Filter", "")
        $ConfigFile = @ScriptDir & "\Config.ini"
            ;----------------PreCheck for Config File--------------
                If FileExists ($ConfigFile) <> 1 Then
                    Exit
                EndIf
            ;----------------End PreCheck--------------------------
;;--------------------------------------------------------------------------------------------
$Sections = IniReadSectionNames ($ConfigFile)
;MsgBox (0,"test", $Sections[0] & @CRLF & $Sections[1] & @CRLF & $Sections[2] & @CRLF & $Sections[3] & @CRLF & $Sections[4]);TESTING ONLY - DELETE WHEN DONE
$p = 0
Do
    $t = 0 ;used for precheck
    $p = $p + 1
    ConfigDefineVars($Sections[$p])

    ;MsgBox(0,"ConfigDefineVars", $sFolder & @CRLF & $dFolder & @CRLF & $cFolder);TESTING ONLY - DELETE WHEN DONE
    PreCheck($dFolder, $sFolder, $cFolder) ;Runs a Pre-check to make sure folder structure exists before running the program
    If $t = 0 Then
        ;MsgBox(0,"PreCheck Run", "Running next functions");TESTING ONLY - DELETE WHEN DONE
        ListArray($sFolder, $Filter) ;Puts File Names in String Array
        ;_ArrayDisplay ($aFileList, $Sections[$p])
        If $t = 0 Then

            FileSplitCount($dFolder, $aFileList) ;Takes filename String Array and splits by $delimiter
            ;MsgBox(0,"PreCheck Run2", "Running split function");TESTING ONLY - DELETE WHEN DONE
        Else
            ;MsgBox(0,"PreCheck Run2", "Skipping split function");TESTING ONLY - DELETE WHEN DONE
        EndIf
    Else
        ;MsgBox(0,"PreCheck Run", "Skipping next functions");TESTING ONLY - DELETE WHEN DONE
    EndIf
Until $p = $Sections[0]


ExitScript() ;Exit script Function



Func ConfigDefineVars($SectionsNum);Defines Variables from config file Sections
    $sFolder = IniRead ($ConfigFile, $SectionsNum, "pendingFolder","") ;Pending Folder, Folder that is awaiting the process
    $dFolder = IniRead ($ConfigFile, $SectionsNum, "reviewFolder","") ;Review Folder, Files that did not pass validation check and division needs to review
    $cFolder = IniRead ($ConfigFile, $SectionsNum, "completedFolder","") ;Completed Folder, Once process is completed this would be location files get moved to
    $FileNetProperties = IniRead ($ConfigFile, $SectionsNum, "FileNetProperties","")
    $FileNetPropertiesSplit = StringSplit ($FileNetProperties,",")
    $ValidationDocumentTitle = IniRead ($ConfigFile, $SectionsNum, "ValidationDocumentTitle","")
    $ValidationDocumentTitleLocation = IniRead ($ConfigFile, $SectionsNum, "ValidationDocumentTitleLocation","")
    $ValidationCountyCodeLocation = IniRead ($ConfigFile, $SectionsNum, "ValidationCountyCodeLocation","")
    $ValidationRDA = IniRead ($ConfigFile, $SectionsNum, "ValidationRDA","")
    $ValidationRDALocation = IniRead ($ConfigFile, $SectionsNum, "ValidationRDALocation","")
    $Validation3 = IniRead ($ConfigFile, $SectionsNum, "Validation3","")
    $Validation3Location = IniRead ($ConfigFile, $SectionsNum, "Validation3Location","")
    $Validation4 = IniRead ($ConfigFile, $SectionsNum, "Validation4","")
    $Validation4Location = IniRead ($ConfigFile, $SectionsNum, "Validation4Location","")

                If $ValidationCountyCodeLocation = 999 Then
                    $CaseCountyCheck = 1 <> 1
                Else
                    ;MsgBox (0,"test of county code", "location = " &$ValidationCountyCodeLocation)
                    $CaseCountyCheck = 'StringLen($SplitFile[$ValidationCountyCodeLocation]) <> 3' ; Checks for 3 digit County Code
                EndIf

                If $ValidationRDALocation = 999 Then
                    $CaseRDALocationCheck = 1 <> 1
                Else
                    $CaseRDALocationCheck = '$SplitFile[$ValidationRDALocation] <> $ValidationRDA' ; Checks for 4 Digit RDA
                EndIf

                If $Validation3Location = 999 Then
                    $CaseValidation3LocationCheck = 1 <> 1
                Else
                    $CaseValidation3LocationCheck = '$SplitFile[$Validation3Location] <> $Validation3' ;Checks Validation3
                EndIf

                If $Validation4Location = 999 Then
                    $CaseValidation4LocationCheck = 1 <> 1
                Else
                    $CaseValidation3LocationCheck = '$SplitFile[$Validation4Location] <> $Validation4' ; Checks Validation4
                EndIf



EndFunc
Func ValidationCheck ($check1)
    $blank = StringLen ($check1)
    If $check1 Then
        EndIf
EndFunc
Func PreCheck($dFolder, $sFolder, $cFolder)
    ;----------------PreCheck for Destination Folder--------------
        If FileExists ($dFolder) <> 1 Then
            $t = 1
            Return
        Else
            $FileLog = FileOpen($dFolder & "\FileLog.log", 1)
        EndIf
    ;----------------End PreCheck--------------------------
    ;----------------PreCheck for Source Folder--------------
        If FileExists ($sFolder) <> 1 Then
            _FileWriteLog($FileLog, "Path to Pending Folder -- " & $sFolder & " -- does not exist")
            $t = 1
            Return
        EndIf
    ;----------------End PreCheck--------------------------
    ;----------------PreCheck for Completed Folder---------
        If FileExists ($cFolder) <> 1 Then
            _FileWriteLog($FileLog, "Path to Completed Folder -- " & $cFolder & " -- does not exist")
            $t = 1
            Return
        EndIf
    ;----------------End PreCheck--------------------------
EndFunc
Func ListArray($sFolder, $Filter)
    $aFileList = _FileListToArray($sFolder, $Filter, 1) ;Create an array of files from the source folder filtering by filetype
                                                        ;in the config.ini files for the specified section
    If @error = 1 Then
        ;MsgBox($MB_SYSTEMMODAL, "", "Path was invalid.")
        _FileWriteLog($FileLog, "Path to File(s) is Invalid")
        $t = 1
        Return
    EndIf
    If @error = 4 Then
        ;MsgBox($MB_SYSTEMMODAL, "", "No file(s) were found.")
        _FileWriteLog($FileLog, "No File(s) were found, exiting.")
        $t = 1
        Return
    EndIf
EndFunc   ;==>ListArray
Func FileSplitCount($dFolder, $aFileList)

    ;$FileLog = FileOpen($dFolder & "\FileLog.log", 1)
    $i = 0
    $y = $aFileList[0]
    Do
        $i = $i + 1
        $SplitFilename = StringTrimRight ($aFileList[$i], 4);strips .pdf from file before creating array
        $SplitFile = StringSplit($SplitFilename, $delimiter);Splits the filename in to array in order to perform validation on each part

                



        Select;Conditions for FileName to match so that they will upload correctly into FileNet
            Case $SplitFile[0] <> $FileNetPropertiesSplit[0] ;$FileNetPropertiesSplit[0] will give the number of properties in the config file for FileNet, this is used for validation placement
                FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                _FileWriteLog($FileLog, "File has " & $SplitFile[0] & " '-' Requirement is 12::" & $aFileList[$i])
            Case $SplitFile[$ValidationDocumentTitleLocation] <> $ValidationDocumentTitle ; Checks that Filename = DWRSSD
                FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                _FileWriteLog($FileLog, "File is not Named Correctly with 'DWRSSD'::" & $aFileList[$i])
            Case $CaseRDALocationCheck
                FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                _FileWriteLog($FileLog, "RDA was " & $SplitFile[$ValidationRDALocation] & " should have been " & $ValidationRDA & "::" & $aFileList[$i])
            Case $CaseCountyCheck
                FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                _FileWriteLog($FileLog, "File county code must be 3 digits::" & $aFileList[$i])
            Case $CaseValidation3LocationCheck
                FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                _FileWriteLog($FileLog, "Validation is set to '" & $SplitFile[$Validation3Location] & "' Validation should be set to " & $Validation3 & "::" & $aFileList[$i])
            Case $CaseValidation4LocationCheck
                FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                _FileWriteLog($FileLog, "Validation is set to '" & $SplitFile[$Validation4Location] & "' Validation should be set to " & $Validation4 & "::" & $aFileList[$i])
        EndSelect
    Until $i = $y
EndFunc   ;==>FileSplitCount
Func CopyCompleted()
EndFunc
Func ExitScript()
    _FileWriteLog($FileLog, "Complete.")
    FileClose ($FileLog)
EndFunc   ;==>ExitScript

thanks,

Damon

SysConfig.ini

Config.ini


It always amazes me how one little thing can cause so much havoc

Share this post


Link to post
Share on other sites
careca

Yeah, but i still dont understand lines like this:

$CaseRDALocationCheck = '$SplitFile[$ValidationRDALocation] <> $ValidationRDA'

Maybe im missing something, but i just never seen anything like it.

So $CaseRDALocationCheck Equals a  '$SplitFile[$ValidationRDALocation] different than $ValidationRDA

And all between quotes, so it's treated as a string...

Can you break it down to me?

I always use something like this:

$CaseCountyCheck = StringLen($SplitFile[$ValidationCountyCodeLocation]) ; Checks for 3 digit County Code
If $CaseCountyCheck <> 3 Then
    MsgBox(64, '$CaseCountyCheck', $CaseCountyCheck)
EndIf

 

Edited by careca

Spoiler

Paster - Main function is to paste text, but has more functions. (No longer mantained, switched to String Trigger)

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Share this post


Link to post
Share on other sites
damon

The problem is that there may be times where the $validationCountyCodeLocation may be set to 999, so if it is I put an if statement in to set

$CaseCountyCheck = 1 <> 1

so that it would set the expression to FALSE in the case and it would proceed to the next case expression.

I am probably going about this structure all wrong.  What i am trying to accomplish is a filename validation that reads from a config file.  I want to add multiple sections to that config so that i can validate different files in different directories.  most all that is working, but there may come a time where $validation3 is not needed so i was going to use 999 as basically a NULL in the ini file and when this is read with iniread it would set to a False so the case would be skipped and the next case would be evaluated.  

What i am trying to do and not sure this is even possible is set the $CaseCountyCheck = expression 

$CaseCountyCheck = StringLen($SplitFile[$ValidationCountyCodeLocation]) <> 3
select
    Case $CaseCountyCheck
            MsgBox(64, "CaseCheck", "This case validated as county code not 3 digits")
Endselect

Depending on the Value of $ValidationCountyCodeLocation depends if i need the case to evaluate it. -- This is really my ultimate goal, if the value is blank when i read the ini file then i do not want it evaluated but if it has a value then i need it to be evaluated.


It always amazes me how one little thing can cause so much havoc

Share this post


Link to post
Share on other sites
careca

Here's how i do this:

$CaseCountyCheck = Whatever, the iniread or something
If $CaseCountyCheck <> 3 Then
    MsgBox(64, 'Result', 'different than 3')
ElseIf $CaseCountyCheck = '' Then
    MsgBox(64, 'Result', 'empty')
ElseIf $CaseCountyCheck = 'meh' Then
    MsgBox(64, 'Result', 'meh')
ElseIf $CaseCountyCheck = 12314523562 Then
    MsgBox(64, 'Result', '12314523562')
EndIf

See what i mean? I dont use Select - Case all that much, so can't help on that, im used to "If's.

$CaseCountyCheck = 1 <> 1

to make it "false" seems "dirty" to me. But if it works hey.

They way i learned, i should first set the variable, then compare it to whatever i need, i wouldn't know how to do stuff if i used that method, seems more complicated.

I just remembered where i use select and case:

$iMsgBoxAnswer = MsgBox(8245, "Startup", "failed! " & @CRLF & "Error Returned: " & @error & @CRLF & "Do you want to retry?")
            Select
                Case $iMsgBoxAnswer = 4 ;Retry
                    Whatever()
                Case $iMsgBoxAnswer = 2 ;Cancel
                    Exit
            EndSelect

Something like this, else, i use other method.

Edited by careca

Spoiler

Paster - Main function is to paste text, but has more functions. (No longer mantained, switched to String Trigger)

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

Share this post


Link to post
Share on other sites
damon

@careca Thank you so much for your help.  I was over complicating the structure and you helped me to realize that.  thank you.  I got it going using your suggestion of replacing the Select/Case with If statements.  This gave me the ability to test for two expressions which is what i was needing to move through the code.

 

Here is what i did and it works great.

If $SplitFile[0] <> $FileNetPropertiesSplit[0] Then;$FileNetPropertiesSplit[0] will give the number of properties in the config file for FileNet, this is used for validation placement
                FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                _FileWriteLog($FileLog, "File has " & $SplitFile[0] & " '-' Requirement is 12::" & $aFileList[$i])
        ElseIf $SplitFile[$ValidationDocumentTitleLocation] <> $ValidationDocumentTitle Then; Checks that Filename = DWRSSD
                FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                _FileWriteLog($FileLog, "File is not Named Correctly with 'DWRSSD'::" & $aFileList[$i])
        ElseIf $ValidationRDALocation <> 999 And $SplitFile[$ValidationRDALocation] <> $ValidationRDA Then
                ;Checks Validation of RDA number
                    FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                    _FileWriteLog($FileLog, "RDA was " & $SplitFile[$ValidationRDALocation] & " should have been " & $ValidationRDA & "::" & $aFileList[$i])
        ElseIf $ValidationCountyCodeLocation <> 999 And StringLen($SplitFile[$ValidationCountyCodeLocation]) <> 3 Then
                    FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                    _FileWriteLog($FileLog, "File county code must be 3 digits::" & $aFileList[$i])
        ElseIf $Validation3Location <> 999 And $SplitFile[$Validation3Location] <> $Validation3 Then
                    FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                    _FileWriteLog($FileLog, "Validation is set to '" & $SplitFile[$Validation3Location] & "' Validation should be set to " & $Validation3 & "::" & $aFileList[$i])
        ElseIf $Validation4Location <> 999 And $SplitFile[$Validation4Location] <> $Validation4 Then
                    FileMove($sFolder & "\" & $aFileList[$i], $dFolder & "\")
                    _FileWriteLog($FileLog, "Validation is set to '" & $SplitFile[$Validation4Location] & "' Validation should be set to " & $Validation4 & "::" & $aFileList[$i])

        EndIf

 


It always amazes me how one little thing can cause so much havoc

Share this post


Link to post
Share on other sites
careca

Im glad i could help. ;)


Spoiler

Paster - Main function is to paste text, but has more functions. (No longer mantained, switched to String Trigger)

Renamer - Rename files and folders, remove portions of text from the filename etc.

GPO Tool - Export/Import Group policy settings.

MirrorDir - Synchronize/Backup/Mirror Folders

BeatsPlayer - Music player.

Params Tool - Right click an exe to see it's parameters or execute them.

String Trigger - Triggers pasting text or applications or internet links on specific strings.

Inconspicuous - Hide files in plain sight, not fully encrypted.

Regedit Control - Registry browsing history, quickly jump into any saved key.

Time4Shutdown - Write the time for shutdown in minutes.

Power Profiles Tool - Set a profile as active, delete, duplicate, export and import.

Firefox Profile Backup - Backup/restore previously saved profile.

Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes.

NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s.

IUIAutomation - Topic with framework and examples

Au3Record.exe

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

  • Similar Content

    • AndreasNWWWWW
      By AndreasNWWWWW
      Hi, i'm curious if this is even possible, i want to do an action if the ini file contains current values under a section.
      for my test i'm looking for 100,200,300,400,500
      and if any of those excits i want to pop a msgbox with the number in the section.
      i can in my example find one, but it does not check everyone. why?  what am i missing?
      Local $iscore810[5] = [100,200,300,400,500] Local $iMax800 = 5 While 1 ;~     Send("{pause}") ;;func les ini fil     $var = IniReadSection("Area.ini", "modus")     If @error Then         MsgBox(4096, "Error", "Unable to read section.")     Else          For $number = 1 To $var[0][0] If $var[$number][1] == $iscore810[3] Then       MsgBox($MB_SYSTEMMODAL, "FAnt den på", $var[$number][0], 5) EndIf                       Next     EndIf     exit WEnd  
    • kelso
      By kelso
      Hello Guru's,
       
      I'm trying to write an autoit script to select from the dropdown list as you see in the attached picture. 
      I read the help page for _IEFormElementOptionSelect, but I cannot grasp how to correlate that with the source code that I'm seeing. any suggestions?

    • jdegraff
      By jdegraff
      I created a quick script to set/clear the topmost status of a window. It works like
          top <title> /on | /off
          
      I want the title match to be case insensitive and to work on partial strings. For example, if the window of note is titled "APLX for Windows" I want
          top apl /on
          
      to work. The AutoIt manual says that for WinTitleMatchMode
          Mode -1 to -4
              Force lower case match according to other type of match.
      so I assumed that by
          aut.Opt "WinTitleMatchMode",-1
          
      I would be doing a lower case match on existing windows. As long as I lcase(title) for the comparison it should match on "APLX for Windows" but it does not Is this a bug or am I misreading the docs?    
    • Ambient
      By Ambient
      I am trying to build a list from a query run against a sybase db. This part works fine. My problem is this, I want to display values in a list depending 
      on the value of certain fields  i.e. See below which works for two. Unfortunately, I need it to work for 3 values.  I don't know how I can do this for 3.  I did try doing a select case but I was getting errors.
       
      i.e. if value =0  then "Card Check" if Value = - Then "Card Spend" Else "Money Added"
      The below immediate iif works brilliantly for two but as I say I need to build this with 3 different values. 
       
       
      $idItem = GUICtrlCreateListViewItem( _iif($adoRs.Fields("TransactionAmount").value =0, "Card check","Money Added") 
       
      Any help appreciated.
    • Jibsbrown
      By Jibsbrown
      Need some help understanding why the ConsoleWrite works inside 2nd For loop but not out side. Between Audit Wiki, Help file , Forum searching (lots of code reading), and YouTube ( shout out to TutsTeach), I have not been able to find the reason why. 
      $sIniPath = "installLog.ini" ; - Get section name $iniSctionNames = IniReadSectionNames($sIniPath) ; - Get Keys and Vaules For $a = 1 to UBound($iniSctionNames) - 1 $keys = IniReadSection($sIniPath , $iniSctionNames[$a]) For $b = 1 to UBound($keys) - 1 $oldSysInfo = IniRead($sIniPath , $iniSctionNames[1], $keys[$b][0], "") $PntIPInfo = IniRead($sIniPath , $iniSctionNames[2], $keys[$b][0], "") $NewPCInfor = IniRead($sIniPath , $iniSctionNames[3], $keys[$b][0], "") ;ConsoleWrite($oldSysInfo & @LF) Next ;ConsoleWrite($oldSysInfo & @LF) Next ConsoleWrite($oldSysInfo) My intention is to use the variables later for Listboxes. Any explanation, forum post links or whatever would help. Sorry also very very new to Autoit.
      Also here's the ini file.
      [OldSysInfo] 4=192.168.0.4|DESKTOP-RDIU2SN|R90M05Q8 5=192.168.0.5|SD0123456789101|R9WGP9P 6=192.168.0.6|SD0123456789102|R9WGP9PT 3=192.168.0.3|DESKTOP-3RS4LKL|R9WGP9P 23=192.168.0.23|SD0123456789102|MXL1234P5I [PrinterIp] 50=192.168.0.50 48=192.168.0.48 47=192.168.0.47 [NewSysInfo] newPC = SD0123456789adfs|192.168.0.185|2UA1234FTR Thank you for your time.
×