Jump to content

Recommended Posts

i have a file flower.txt with the name of the flowers and there picture location and information about that kind of flower. i wana cerat a gui that will display the flower picture and it information 

here is the script 

#include <Misc.au3>
#include <EditConstants.au3>
#include <Constants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <AVIConstants.au3>
#include <TreeViewConstants.au3>
#include <GuiComboBox.au3>
#include <GuiTab.au3>
#include <file.au3>
#include <array.au3>

Global $sfPath = 'flowers.txt'
Global $aFlowers
_FileReadToArray($sfPath,$aFlowers,$FRTA_NOCOUNT,'|')
_ArrayColDelete($aFlowers,0) ;row 0 has no data so deleting

$Form1 = GUICreate("Search Flower Name",320, 480)
$input = GUICtrlCreateInput("", 60, 360, 209, 25)
$idss = GUICtrlCreateButton("Search", 130, 400, 73, 65)

GUISetState(@SW_SHOW)




Func Searchf()



Global $Fname = GUICtrlRead($input)


        For $iNo = 0 To UBound($aFlowers[0][0]) - 1 ;

           if $Fname = $aFlowers[$iNo][0] then

MsgBox($MB_SYSTEMMODAL, "","Flower nfo", ""& $aFlowers[$iNo][1] &"")

pic()

EndIf
        Next

EndFunc

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE

            Exit
         Case $nMsg = $idss

        Searchf()

    EndSwitch
 WEnd

func pic()
   For $iNo = 0 To UBound($aFlowers[0][0]) - 1
   GUICtrlCreatePic($aFlowers[$iNo][2], 20, 30, 280, 280)
    Next
   EndFunc

here is the flower.txt file

|Hibiscus|Hibiscus is a hardy perennial which grows in variety of colors, sizes and fragrances. Actually they are tropical flowers which require ample sunlight and moisture to grow well. These flowers start blooming in late spring and continuously bloom through July and August.|C:\T-in\IMG\2.jpg
|Lilies|There are different types of lily flowers which bloom in August including water lilies, tiger lilies and gold band lilies. Tiger lilies generate orange flowers having black spots. This lily blooms in delayed July and beginning of August. Gold band lily produce exotic white blooms. All varieties of lilies need enough space to grow and protection from summer sun.|C:\T-in\IMG\1.jpg
|Turtlehead|Growing in humid areas, turtleheads are small flowers which bloom from July to September. They mostly produce flowers of white and pink color.|C:\T-in\IMG\3.jpg
|Hydrangea|These are ever green bushes which produce flowers in different colors including white, purple, blue and pink. They are easy to grow bushes and can grow 3 to 10 feet tall. They require morning sun to grow but they should be protected from noon and afternoon sun.|C:\T-in\IMG\4.jpg
|Dahlias|August proves to be the peak blooming season for dahlias. Dahlias come in colors like white, orange, yellow, red and purple. They can tolerate all types of soil and require full sun to grow.|C:\T-in\IMG\5.jpg

am still trying to learn about how the ubound work and the _filereadtoarray

Link to post
Share on other sites
#include <Array.au3>

Local $sPath = 'flowers.txt'
Local $hPath = FileOpen($sPath)
If $hPath = -1 Then Exit

Local $aFlowers = StringSplit(StringTrimLeft(FileRead($hPath), 1), "|", 2)
FileClose($hPath)

_ArrayDisplay($aFlowers)

For $x = 0 To UBound($aFlowers) - 1 Step 3
    MsgBox(0, "NAME", $aFlowers[$x])
Next
For $x = 1 To UBound($aFlowers) - 1 Step 3
    MsgBox(0, "DESCRIPTION", $aFlowers[$x])
Next
For $x = 2 To UBound($aFlowers) - 1 Step 3
    MsgBox(0, "IMAGE", $aFlowers[$x])
Next
For $x = 0 To UBound($aFlowers) - 1
    If $aFlowers[$x] = "Hibiscus" Then
        MsgBox(0, "NAME", $aFlowers[$x])
        MsgBox(0, "DESCRIPTION", $aFlowers[$x + 1])
        MsgBox(0, "IMAGE", $aFlowers[$x + 2])
        ExitLoop
    EndIf
Next

Study it, isn't so hard.

Edited by Terenz

Nothing is so strong as gentleness. Nothing is so gentle as real strength

 

Link to post
Share on other sites

You were really close, keep up the good work!

 

All problems I have comments on. This should work. Let me know!

 

#include <Misc.au3>
#include <EditConstants.au3>
#include <Constants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <AVIConstants.au3>
#include <TreeViewConstants.au3>
#include <GuiComboBox.au3>
#include <GuiTab.au3>
#include <file.au3>
#include <array.au3>

Global $sfPath = 'flowers.txt'
Global $aFlowers, $FlowerFound = 0 ; Added in a global variable that you can assign if when searching the flower is in the Flower.txt so you can alert the user no data was found.
_FileReadToArray($sfPath, $aFlowers, $FRTA_NOCOUNT, '|')
_ArrayColDelete($aFlowers, 0) ;row 0 has no data so deleting

$Form1 = GUICreate("Search Flower Name", 320, 480)
$input = GUICtrlCreateInput("", 60, 360, 209, 25)
$idss = GUICtrlCreateButton("Search", 130, 400, 73, 65)

GUISetState(@SW_SHOW)




Func Searchf()


    Global $Fname = GUICtrlRead($input)



    For $iNo = 0 To UBound($aFlowers) - 1 ; You do not add [0][0] to a Ubound since its searching the entire Array already it just requires the Array Name.


        If $Fname = $aFlowers[$iNo][0] Then

            MsgBox(0, "Flower Info", $aFlowers[$iNo][1]) ; Shortened this up for cleaner look IMO.
            $FlowerFound = 1 ; Assigned a 1 to the FlowerFound so you can detect if the flower is in the Flowers.txt

            pic()

        Else

        EndIf
    Next

    If $FlowerFound = 0 Then ; Error handling to let the user know the flower is not located in the Flower.txt
        MsgBox(48, "Error", "No flower found in database!")
    EndIf

    $FlowerFound = 0 ; Reassign FlowerFound to 0 so next search it can detect if its not found or found again

EndFunc   ;==>Searchf

Func pic()
    For $iNo = 0 To UBound($aFlowers) - 1 ; Same principle as above, only the Array Name is needed. 
        GUICtrlCreatePic($aFlowers[$iNo][2], 20, 30, 280, 280)
    Next
EndFunc   ;==>pic

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE

            Exit
        Case $idss ; You just need the ID of the Control, not the GuiGetMsg info. You were close!

            Searchf()

    EndSwitch
WEnd

 

MCR.jpg?t=1286371579

Most recent sig. I made

Quick Launcher W/ Profiles Topic Movie Database Topic & Website | LiveStreamer Pro Website | YouTube Stand-Alone Playlist Manager: Topic | Weather Desktop Widget: Topic | Flash Memory Game: Topic | Volume Control With Mouse / iTunes Hotkeys: Topic | Weather program: Topic | Paws & Tales radio drama podcast mini-player: Topic | Quick Math Calculations: Topic

Link to post
Share on other sites

I made some changes to @Damein script:

#include <Misc.au3>
#include <EditConstants.au3>
#include <Constants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <AVIConstants.au3>
#include <TreeViewConstants.au3>
#include <GuiComboBox.au3>
#include <GuiTab.au3>
#include <file.au3>
#include <array.au3>

Global $sfPath = 'flowers.txt'
Global $idPic=-99               ;<== placeholder PicControlID
Global $aFlowers
; $FlowerFound = 0 ; Added in a global variable that you can assign if when searching the flower is in the Flower.txt so you can alert the user no data was found.
;<== moved in local scope
_FileReadToArray($sfPath, $aFlowers, $FRTA_NOCOUNT, '|')
_ArrayColDelete($aFlowers, 0) ;row 0 has no data so deleting

$Form1 = GUICreate("Search Flower Name", 320, 480)
$input = GUICtrlCreateInput("", 60, 360, 209, 25)
$idss = GUICtrlCreateButton("Search", 130, 400, 73, 65)

GUISetState(@SW_SHOW)

Func Searchf()
    Local $Fname = GUICtrlRead($input)  ;<== use local scope
    Local $FlowerFound                  ;<== 
    For $iNo = 0 To UBound($aFlowers) - 1 ; You do not add [0][0] to a Ubound since its searching the entire Array already it just requires the Array Name.

        If $Fname = $aFlowers[$iNo][0] Then
            MsgBox(0, "Flower Info", $aFlowers[$iNo][1]) ; Shortened this up for cleaner look IMO.
            $FlowerFound = 1 ; Assigned a 1 to the FlowerFound so you can detect if the flower is in the Flowers.txt
            pic($aFlowers[$iNo][2]) ;<== calling func with path from pic
            ExitLoop ;<== allready found so search is ended
            ;Else                       ;<==
        EndIf
    Next

    If $FlowerFound = 0 Then ; Error handling to let the user know the flower is not located in the Flower.txt
        MsgBox(48, "Error", "No flower found in database!")
    EndIf

    ;$FlowerFound = 0 ; ;<== no need in local scope
EndFunc   ;==>Searchf

Func pic($sPicPath)
    If $idPic<>-99 Then GUICtrlDelete($idPic)
    $idPic=GUICtrlCreatePic($sPicPath, 20, 30, 280, 280)
EndFunc   ;==>pic

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE

            Exit
        Case $idss ; You just need the ID of the Control, not the GuiGetMsg info. You were close!

            Searchf()

    EndSwitch
WEnd

my added comments begin with ;<== and my changes are based on my thinking each flowername is only once in the file.

 

Edited by AutoBert
Link to post
Share on other sites

@Terenz you saved my life . your script was so easy to experiment with  so i could know what i needed to do Thank you

and for @damien your explanation helped me know what are the mistake i had in my script

@AutoBert i cant thank you enough every time am in trouble i found you there for me without you i would have spend moths postponing this project i owe you so much i hope you have a wonderful day 

thanks everyone and here is a happy cat face

happy cat.jpg

Edited by Jcreator
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
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By mmoalem
      Hi all - I have created a simple script that turn on cctv software (contacam)  when my phone does not ping back (when I'm out of range of home network)
      #include <MsgBoxConstants.au3> $iPing = 0 For $i = 5 To 1 Step -1 ; this 5 loops cycle is just for testing - please ignnore - when complete it will be an endless loop Example() Sleep(120000) Next Func Example() ; Ping the phone. $iPing = Ping("192.168.1.102") If $iPing Then ; If a value greater than 0 was returned then turn off camera. _endCCTV() Else _startCCTV() ; If a value of 0 was returned then turn on camera. EndIf EndFunc ;==>Example Func _startCCTV() ShellExecute("C:\contacam capture\FJ Camera\CAMERA.bat", "on") Sleep(10000) ShellExecute("C:\contacam capture\FJ Camera\CAMERA_REC_SENSITIVITY.bat", "50") EndFunc Func _endCCTV() ShellExecute("C:\contacam capture\FJ Camera\CAMERA_REC_SENSITIVITY.bat", "0") Sleep(10000) ShellExecute("C:\contacam capture\FJ Camera\CAMERA.bat", "off") EndFunc  
       
      the problem I have is that in this format the script run the bat file that turn on the camera (or off) everytime the ping runs but obviously once the ping returns 0 and the camera starts I only want to run the bat on ping NOT 0 (turn off camera) 
      any ideas/advice?
    • By meety
      My au3 script program needs administrator privileges on win10 to be executed correctly, because it needs to be added to the boot---Script code:RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName, "REG_SZ", @ScriptFullPath)
      I need to let the program automatically get administrator privileges, so I use a function of #RequireAdmin. Although the program can be added to the boot, but does not execute after system boot up? why is that?
      What should I do?
      --------------------------------------------------------------------
      Update:
      I found that after using the #RequireAdmin function, the program cannot be executed after system boot up.
      An example is given below. after it is compiled, it will not be executed after system boot up in the following two ways.
      1. C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\
      2. RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", @ScriptName, "REG_SZ", @ScriptFullPath)
      why is that?
      example
      #include <MsgBoxConstants.au3>
      #RequireAdmin
      Func test()
          MsgBox(0, "", "this is test message")
      EndFunc   ;==>test
      test()
       
       
    • By PeterVerbeek
      This topic give you access to an AutoIt functions library I maintain which is called PAL, Peter's AutoIt Library. The latest version 1.25 contains 212 functions divided into these topics:
      window, desktop and monitor GUI, mouse and color GUI controls including graphical buttons (jpg, png) logics and mathematics include constants string, xml string and file string dialogues and progress bars data lists: lists, stacks, shift registers and key maps (a.ka. dictionaries) miscellaneous: logging/debugging, process and system info Change log and files section  on the PAL website (SourceForge).
      A lot of these functions were created in the development of Peace, Peter's Equalizer APO Configuration Extension, which is a user interface for the system-wide audio driver called Equalizer APO.
    • By Vikramjeet
      include-once #include <File.au3> #include <Excel.au3> #include <String.au3> #include <MsgBoxConstants.au3> Local $file = "TEST.log" FileOpen($file, 0) $TTLPax = 1 For $i = _FileCountLines($file) - $TTLPax to _FileCountLines($file) $line = FileReadLine($file, $i) Global $TktNo = StringMid($line, 8, 13) ; reads 13 characters from $Line starting from the 8th character msgbox(0,'',$TktNo) ; This is just for me to debug For $NoOfPax = 1 to 2 local $TTLSeg = 2 msgbox(0,'',$TTLSeg) msgbox(0,'',"7ABC"& $TktNo &"'N"& $NoOfPax &".1'C1,2'S1,2'B") ; This makes 7ABC1234567890123'N1.1'C1,2'S1,2'B ;But in the next loop I want the value to be 7ABC1234567890333'N2.1'C1,2'S1,2'B Next ExitLoop Next *TEST
      JAMES BAKER
        1.NYC-23JAN
        2.TJ 1234567890123
        3.TJ 1234567890333
      I am reading a file with last 5 lines as above. I want to be able to loop through and pick the values as follows
      1- Pick 1234567890123
      2- Use it to build a format with N1.1
      3- Pick 1234567890333
      2- Use it to build a format with N2.1
      Need help with the loop. Thank You
       
       
    • By Vikramjeet
      For $A1 = 12 To 11 + $Total For $B1 = 1 To ($oExcel.Application.Cells($A1,6).Value) ; This value is from the Excel file. It can be from 1 - 9. For $N1 = 7 To ??? ; This is based on the value of $B1 ((1 = 7, 2 = 17, 3 = 27, 4 = 37, 5 = 47) Send("-"& ($oExcel.Application.Cells($A1,$N1).Value) &"/"& ($oExcel.Application.Cells($A1,$N1+1).Value)) Sleep(400) Send("{ENTER}") Sleep(700) Next Next Next I am not able to figure how to loop $N1 as follows
      If the Value of $B1 = 1 then $N1 = 7
      If the Value of $B1 = 2 then $N1 = 17
      If the Value of $B1 = 3 then $N1 = 27
      If the Value of $B1 = 4 then $N1 = 37  
      The value of $N1 comes from $B1 where 1 = 7, 2 = 17, 3 = 27, 4 = 37, 5 = 47)
      Thank You
×
×
  • Create New...