Wicked_Caty

Unicode code of an array

11 posts in this topic

#1 ·  Posted (edited)

I made a small program that should get the unicode code of an array, save it in a variable, and write it into an file. That should be done for every array of a string.

For $i = 0 To $len Step 1           ; $len is the length of the text I enter previously

    $tmp0 = ChrW($text[$i])         ; $text is the text
    FileWrite($f, $tmp0 & @CRLF)    ; $f is the file I write into
    $tmp0 = ""

Next

Building and compiling finish without raising warnings or errors, but the program fails when it's supposed to get the unicode code of that array... 

The error message says "Line 357 (File "D:\documents\coding\Crypt\Crypt.exe"): Error: Subscript used on non-accessible variable."

My code ends at line 141, so it's not a problem with my code as such. I'd say that ChrW() isn't able to handle the variable I give it. I don't think it's a problem with the string, but I suspect that it's because I use a variable as an index ($text[$i]).

If my clue was right, how do I fix it? If not, what could be the problem? Thanks for the help!

Edited by Wicked_Caty

Share this post


Link to post
Share on other sites

I don't know where and how you declared and defined $len. I don't know what the contents of $text are.

My only guess, based on the small snippet of code you posted, is you did $len as the full length of the string but forgot to subtract 1 (since string lengths start at 1 unless the string is "")

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Which data is assigned ´to $test? And also without any include the script has not 357 lines. May be you have to change to 

For $i = 0 To $len-1 ;Step 1 not nececary

if not post the complete script.

Edited by AutoBert

Share this post


Link to post
Share on other sites
Quote

I don't know where and how you declared and defined $len. I don't know what the contents of $text are.

Local $len = StringLen($text)
Local $text = InputBox("UCC", "Enter the text")

$text is entered by the user, but it will be plain text like "abc" or "test" or "hello". Sometimes there might be numbers in there too, but really nothing special (yet).

Quote

My only guess, based on the small snippet of code you posted, is you did $len as the full length of the string but forgot to subtract 1 (since string lengths start at 1 unless the string is "")

I didn't know that, thanks. Unfortunately, neither subtracting 1 from $len, nor using $i = 1 in the for-loop works (same error).

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Okay, here's the full script. Maybe you find the problem in there.

(before you tell me, yes, I know that this is probably the weakest encryption ever. It's just for learning autoit a bit better and hiding my personal notes from friends and family)

Crypt.au3

Edit: it's not fully finished yet, so please excuse some unnecessary things in there.

 

Edited by Wicked_Caty

Share this post


Link to post
Share on other sites

I see $Text isn't a array

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Func Encryption($log, $text, $file)

   Local $len = StringLen($text)
   Local $f = FileOpen($file, $FO_APPEND)
   Local $tmp0 = ""
   Local $tmp1 = ""
   Local $aText = StringSplit($text,'',2)

   For $i = 0 To UBound($aText)-1

      $tmp0 = ChrW($atext[$i])
      FileWrite($f, $tmp0 & @CRLF)
      $tmp0 = ""
      $tmp1 = ""

   Next

   FileWrite($log, "Text encrypted on " & @MDAY & "." & @MON & "." & @YEAR & " at " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
   FileClose($f)

EndFunc

Just making string $Text to a array and work with should be the solution. But this is not crypted, see there for

_Crypt_EncryptData
Edited by AutoBert
1 person likes this

Share this post


Link to post
Share on other sites

Thanks :D it works now :D

Had to #include <StringConstants.au3> though :) 

Thanks for the awesome help!

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

Easy task and much better as to decrypt boter's wishes. AutoIt is not the first programming langue? i think C or Pascal was first?

Edited by AutoBert

Share this post


Link to post
Share on other sites

I indeed tried some other programming languages first :) I did C++, vbs and python before, but switched to autoit because it's enough for my basic needs and A LOT easier than C++ for example.

Share this post


Link to post
Share on other sites

Idk about  A LOT easier than C++. What you're doing is very simple and pretty easy in C++ too. If all you're doing is some simple stuff for fun then AutoIt is fine. If you want to get into programming don't make AutoIt your go to. It's simple, easy, and the syntax is forgiving, but it's more of a supplement than a full course meal.

Python, I'm told, is a good beginner language, as is Java, and if you want to do something easy in .net than C# is another good one. C++ can be hard and difficult for a beginner but if you get a good book, and spend the time reading and understanding what it's trying to teach you, you will do fine. Also, classes and objects are like crack and a good IDE makes writing code so much better.

Just my two cents.

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

    • ronmage
      By ronmage
      So I have a loop that keeps reading data from an array and searching it for the same value. If the value is no there it does work then adds the value to the array to prevent it from doing the same work.
      If _ArraySearch($ID,$filearray[$i]) = -1 Then Work.... _ArrayAdd($ID,$filearray[$i]) EndIf This is in a for loop hence $i
      So what is happening is the code works great for several hours. After a period of time _ArraySearch($ID,$filearray[$i]) will result in -1 even if $ID = $filearray. So it ready as if there is no data in the array. Anyone have this problem? 
       
      Also I am just running in using F5 not compiling it and running it if that makes a difference.
       
    • Ascer
      By Ascer
      1. Description.
      Udf working with MSDN System.Collections.ArrayList. Allow you to make fast operations on huge arrays, speed is even x10 better than basic _ArrayAdd.  Not prefered for small arrays < 600 items. 2. Requirements
      .NET Framework 1.1+ System Windows 3. Possibilities.
      ;=============================================================================================================== ; UDF Name: List.au3 ; ; Date: 2018-02-17, 10:52 ; Description: Simple udf to create System Collections as ArrayList and make multiple actions on them. ; ; Function(s): _ListCreate -> Creates a new list ; _ListCapacity -> Gets a list size in bytes ; _ListCount -> Gets items count in list ; _ListIsFixedSize -> Get bool if list if fixed size ; _ListIsReadOnly -> Get bool if list is read only ; _ListIsSynchronized -> Get bool if list is synchronized ; _ListGetItem -> Get item on index ; _ListSetItem -> Set item on index ; ; _ListAdd -> Add item at end of list ; _ListClear -> Remove all list items ; _ListClone -> Duplicate list in new var ; _ListContains -> Get bool if item is in list ; _ListGetHashCode -> Get hash code for list ; _ListGetRange -> Get list with items between indexs ; _ListIndexOf -> Get index of item ; _ListInsert -> Insert a new item on index ; _ListInsertRange -> Insert list into list on index ; _ListLastIndexOf -> Get index last of item ; _ListRemove -> Remove first found item ; _ListRemoveAt -> Remove item in index ; _ListRemoveRange -> Remove items between indexs ; _ListReverse -> Reverse all items in list ; _ListSetRange -> Set new value for items in range ; _ListSort -> Sort items in list (speed of reading) ; _ListToString -> Get list object name ; _ListTrimToSize -> Remove unused space in list ; ; Author(s): Ascer ;=============================================================================================================== 4. Downloads
      List.au3 5. Examples
      SpeedTest _ArrayAdd vs ListAdd SpeedTest ArraySearch vs ListIndexOf Basic usage - crating guild with members  
    • FMS
      By FMS
      Hello,
      I'm trying to read a binary file to an array but couln't get it to work.
      Also I coul not find any help in the forum around this subject whish was helpfull.
      Is there any way it could be done?
      I tried a lot of ways but maybe somebody know's the right way?
      #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 #include <File.au3> #include <Array.au3> #include <AutoItConstants.au3> Local $in=FileOpen("TEST_labels.idx1-ubyte",16) ; 16+0=Read binary Local $data = FileRead($in) Local $FileArray = BinaryToString($data,4) ;~ $FileArray = StringSplit($BinarydData, @CRLF, 1+2) ;~ Local $FileArray = StringRegExp($BinarydData, "[^\r\n]+", 3) FileClose($in) _ArrayDisplay($FileArray,"$FileArray","",32) MsgBox($MB_SYSTEMMODAL, "", "$FileArray = " & $FileArray )  
      TEST_labels.idx1-ubyte
    • ur
      By ur
      I am reading a CSV file which is tab seperated as below.
      Local $aArray = FileReadToArray($file) And now, I am splitting this main array record wise so that Array contains internally another arrow to represent each row.
      For $i = 0 to (UBound($aArray) - 1) ;MsgBox(0,"",$aArray[$i]) $aArray[$i] = StringSplit(StringStripCR($aArray[$i]), Chr(9),2);Chr(9) for tab ;_ArrayDisplay($aArray[$i]) Next Afther that, _ArrayDIsplay is able to see the individual internal arrays.
      _ArrayDisplay($aArray[1]) But If I try to access the individual element of it as below.It is not showing any result.
      MsgBox(0,"",$aArray[1][1]) Any suggestion, below is the sample csv file.
      New Text Document.csv
    • 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.