Jump to content

v3.2.0.1 (Win98se) Scripting.dictionary item malfunction


BitRot
 Share

Recommended Posts

First off, this is about a very old version (3.2.x), running on a very old machine (w98se). If this question should have been posted elsewhere or isn't apropriate anymore than please do tell.

The problem is as follows: I've created a dictionary object, and tried to use the"item" method, and got some unexpected results:

$oDict.add("foo","dog")
$oDict.Item("foo") = "cat"

$oDict.item("bar") = "mouse"
$h = $oDict.item("rat")

The result of the above was (using "for $Key in $oDict"):

"foo" - "dog"
"bar" - ""
"rat" - ""

In the first result the key's value isn't replaced, in the second the key is created but the value not added and in the third the key is created where it should not have been.

I've googled quite a bit to see if I could find the cause, and of course the solution, to this but could not find anything related. I've found and looked at the changelog for the different versions, but none in this regard was mentioned. Today I've found the buglist, but that onet stopped just short of v3.2.0.1 .


I've also tried later versions, with the last one working being v3.2.4.1. Although that solved the first two problems, it didn't solve the third.
The next version, v3.2.4.2, was unable to start the script, citing it could not even find it: "G:\AutoIt\!Test.au3 (0) : ==> Error opening the file.: ". v3.2.8.1, the last zipped version "to support Windows 95 and Windows NT 4.0." showed to have the same problem .

So, is there someone here who knows which version I should be using to solve all four of the above problems ? If such a version exists that is. :-)

Link to comment
Share on other sites

Does the code work on newer versions of Windows? If not, check your coding. Otherwise, I'd have to look through the closed tickets on Issue Tracker and the Changelog. Alternatively, I've had a good bit of luck getting newer versions of programs (Firefox, etc) to work on older versions of Windows using KernelEX

Edited by rcmaehl

My UDFs are generally for me. If they aren't updated for a while, it means I'm not using them myself. As soon as I start using them again, they'll get updated.

My Projects

WhyNotWin11
Cisco FinesseGithubIRC UDFWindowEx UDF

 

Link to comment
Share on other sites

Why in the world are  you using an OS that came out almost 20 years ago?

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

Link to comment
Share on other sites

14 hours ago, BrewManNH said:

Why in the world are  you using an OS that came out almost 20 years ago?

Lol i did a Win 98 install about a month ago and i have a win 2000 coming in for an overhaul to make quicker next week.

They still exist..

Link to comment
Share on other sites

Quote

Due to an error in the transmission of weather data from the flight operations at Paris-Orly takes a few hours to a standstill.
The reason was a computer glitch with the operating system Windows 3.1 - the forerunner of Windows 95th


Translated with google from http://www.faz.net/aktuell/gesellschaft/flughafen-paris-orly-23-jahre-alter-computer-legt-flugbetrieb-lahm-13921588.html

 

Edited by AutoBert
Link to comment
Share on other sites

rcmaehl,





Does the code work on newer versions of Windows? If not, check your coding.
I already mentioned that its starts to partially work correctly using a newer version of AutoIt. Does that tell you enough ?

Otherwise, I'd have to look through the closed tickets on Issue Tracker and the Changelog.
I think I already wrote that I found both, and what my success with them was.

Alternatively, I've had a good bit of luck getting newer versions of programs (Firefox, etc) to work on older versions of Windows using KernelEX
Thanks. But the first thing I'm looking for is a version of AutoIt where the described problem is solved. If that version than does not run on w98se I have to think about further options (of which your suggestion might be one).

Edit:
Although I did not think that the OS would be to blame, to make absolutily certain I put v3.2.0.1 on a bit more recent OS. And whatdoyou know, the results where exactly the same shown in my initial message. :-) :-(

Edit #2:
I unpacked the v3.2.12.1 SFX (the last one that supposedly supports an OS below XP) onto an XP machine (because it refuses to run on w98se) and ran the example code from my first message. Same result as for v3.2.4.1 : the $h = $oDict.item("rat") line still adds the key when it definitily shouldn't. :-(( Edited by BitRot
Link to comment
Share on other sites

BrewManNH,

Why in the world are you using an OS that came out almost 20 years ago?

I'm sorry, but that is not in any way even an attempt to answer my question. Why the heck have you posted it ?
Edited by BitRot
Link to comment
Share on other sites

Hmmm ...

I assumed that the $h = $oDict.item("rat") problem (a key being added when that should not happen) was AutoIt related, but something urged me to put the example code into VBScript and see what would happen. It turns out it does the very same thing*. :-((

* Both in w98se as well as XP.

It looks like that whomever wrote the dictionary object let the getter and setter be handled by the same function, leaving it upto the scripting engine to catch a result -- if one was returned..

In other words, case closed. v3.2.4.1 fixes the problem with not setting a keys data, and adding a key when it shouldn't isn't caused by AutoIt.

Edited by BitRot
Link to comment
Share on other sites

Last update:

Looking at the Dictionary objects code itself (inside scrrun.dll) it turns out that the adding of a key with no value when on a item *get* action the key is not found is actually done fully on purpose. Boy, I would really have liked to know what the thoughts of the designers/programmers where when they did that. Bloody idiots ...

Link to comment
Share on other sites

On 9/11/2016 at 1:30 AM, BitRot said:

BrewManNH,
 

Why in the world are you using an OS that came out almost 20 years ago?


I'm sorry, but that is not in any way even an attempt to answer my question. Why the heck have you posted it ?

@BitRot This is a public forum--you don't get to dictate how people post/reply.  If you are concerned they broke the rules you can report the post.   I would've made the same comment as BrewMan.  I hope your Win98 machine ins't connected to the internet.  Regardless, glad you solved your issue.

Edited by spudw2k
Link to comment
Share on other sites

This is a public forum--you don't get to dictate how people post/reply.
True.

But just like in the real world, when someone is interfeering in a conversation while not providing anything of value, those people can be reprimanded. Which is what I did.

I would've made the same comment as BrewMan.
Why ?

It does not help in regard to the question in the slightest, and is, in effect, only made to make oneself "feel good" by bashing someone else. Nothing more, nothing less.

And pardon me, do you have any idea why I still have that OS running ? Nope, you simply do not care. And that, my friend, is dumb arrogance.

I hope your Win98 machine ins't connected to the internet.
Actually, it has been connected to it for all that time, and I've been visiting all sorts of sites (in search of this-or-that info). And without any noticable problem. Mainly due to the usage of the only actually working AV product, ones wetware (which also blocked installing of Flash and other random software. Keeping JS turned off helps too. :-) ).

Much luck with your rammed-down-the-throat, riddled with spyware -- or "Telemetry" as its called by MS -- and its mandatory udates which can just rip out functionality -- see webcams -- Win10 though. You are now merely a user of the OS -- going along for the ride -- , while I'm still the owner of mine. :-)

Regardless, glad you solved your issue.
I said I found the cause of the problem, I never said I solved it (which it isn't).

The possible work-arounds are all ugly as f*ck. Especially when you need to mind that other (parts of the) script(s) might not use such work-arounds (copy-pasted from other sources, or simply by mistake). It also excludes a NULL value being used in a dictionary object, as it can generate that itself, and it effectivily negates the usefullness of the "exists" method.
Link to comment
Share on other sites

2 hours ago, BitRot said:

Mainly due to the usage of the only actually working AV product,

I'm curious of what AV you use.

On the Win98 "issue", when I revamped the script-o-matic , there were questions of why support for Win98, and this post proves it is useful :) 

Edit: I just googled wetware :D

Edited by argumentum

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

4 hours ago, BitRot said:
I would've made the same comment as BrewMan.

Why ?

I think you know the answer to this as you went on to explain how protected your machine is.  I suppose for people, like myself, who are more cognoscente of computer security issues would see this as a major red flag.

4 hours ago, BitRot said:

is, in effect, only made to make oneself "feel good" by bashing someone else. Nothing more, nothing less.

I am sorry you feel that way, but it's not about making myself feel good by making you feel bad.  BrewMan and I are expressing our concern about the risk.  Ourlanguage could've been more gentle, but I assure you (at least for me), no insult or disrespect was implied.

 

4 hours ago, BitRot said:

I said I found the cause of the problem, I never said I solved it (which it isn't).

I guess when I read 

On 9/11/2016 at 5:51 AM, BitRot said:

In other words, case closed. v3.2.4.1 fixes the problem with not setting a keys data, and adding a key when it shouldn't isn't caused by AutoIt.

I interpreted that to mean you resolved it.

 

4 hours ago, BitRot said:

You are now merely a user of the OS -- going along for the ride -- , while I'm still the owner of mine. :-)

Talk about disrespect and arrogance...you wear the hat well.

Edited by spudw2k
Link to comment
Share on other sites

On 9/13/2016 at 9:53 AM, spudw2k said:

 I suppose for people, like myself, who are more cognoscente of computer security issues would see this as a major red flag.

I too, use wetware, along with AdBloker in the browser. ( I use Win7, but that is not the point )

I believe that since LAN IP is not the WAN IP, and that, if no mapping is done to open a port from the outside, no firewall is needed, as there is no routing.
And virus has to find a way to execute, either via social engineering or a service ( being java and javascript ) executing it. Now, if these "executors" don't behave as default and one does not go and run it, how else a virus can load/run in a personal house network ? ( I don't use Internet Explorer, so no buffer overflow bug, I'd suspect ).

I'm willing to go as far as setting up a Win98 VM ( or hardware if there is a difference ) to prove its dangerousness ( if is not too much out of your way, or anyone who'd like to show it )

Disclaimer: This is all in good fun for me, I'm curious and would welcome the exploratory experience.

There is a nice Windows 98 Second Edition (VMWare) here to play around with.

Edited by argumentum
added a link to winworldpc.com

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

In a perfect world, sure--if no one does anything to compromise a system locally and there is no direct internet connection and safe browsing habits are used, a system is "safe".  Even outside of these conditions there are risks: modems/firewalls can be targeted and attacked allowing the attacker the ability to traverse/access the internal network(s).  Drive-by-downloads can occur, even on reliable and safe websites if they are compromised, DNS poisoning comes to mind as well.

Now these issues are not specific to any OS, but the fact that an obsolete OS is in use and is no longer maintained (patched) means much greater risk.  The internet can be a dangerous place. :)

Link to comment
Share on other sites

argumentum,

Edit: I just googled wetware :D
:-) Yup. The gray stuff.

On the Win98 "issue", when I revamped the script-o-matic , there were questions of why support for Win98, and this post proves it is useful :)
It was not so much if Win98 should be supported, but why a version of autoit which was said to support it wouldn't work on that OS.

Seaching for the error message (as I posted it) didn't work for me, but doing so for "AutoIt3A.exe" did. It brought me back to this forum, which showed me that the "A" versions are the ANSI versions, and the ones without that letter actually being the "W" -- for wide-character -- versions. And as Win98se does not truly support wide-character its no wonder those executables failed to work. Putting a few rather non-obvious lines into one of SciTEs configuration files would tell SciTE to use the "A" versions, which worked well.

Question remains to why the downloads did not contain any warning/explanation to the above, nor what to do to "fix" it for Win9x. :-(


I believe that since LAN IP is not the WAN IP, and that, if no mapping is done to open a port from the outside, no firewall is needed, as there is no routing.
I assume that you are talking about your modem there ? Than indeed, no port-forwarding means that an active attempt cannot be made. But that does not protect you from someone sending tampered data back on a (webpage?) request you did to the 'net. And that data does indeed reach your 'puter, and can try to cause buffer overflows and more of that ilk.

And virus has to find a way to execute, either via social engineering or a service ( being java and javascript ) executing it.
Not always. Some programs that are used to run certain web-based content can have abusable bugs, meaning that if you visit a website with such data you can be infected without you doing anything special (hint: Flash :-) )

Now, if these "executors" don't behave as default and one does not go and run it, how else a virus can load/run in a personal house network ?
Do you ever save/store stuff from the 'web or other people onto your'puter ? Than you can be infected that way. Word textfiles can be stuffed with malicious macros. PDF files idem. Even some image handlers have flaws which can be explooited by just looking at a stored image. Worse: some (old, Microsoft) image formats seem to have been deigned to be abused. Just take a look at the .WMF format (which allowed executable code to be embedded, to catch send-to-printer failures).

Also, don't forget that if you have a "weak" device in your LAN (WIFI security cams and stuff like it or even just a WIFI router (for your phone and/or slabs) ) that it could be used to "smuggle " the attack onto your LAN, bypassing the ISPs router defenses ...

Also, some viri infect USB sticks (or other media like it), and by that way let themselves be transported from one computer to the next.

'm willing to go as far as setting up a Win98 VM to prove its dangerousness
Any OS can be dangerous in yhis regard -- though (Linux seem to have a good track record :-) ).

Disclaimer: This is all in good fun for me, I'm curious and would welcome the exploratory experience.
Same kind of disclaimer here: I'm not a professional, nor have I made an actual study of the subject.
Link to comment
Share on other sites

spudw2k,

I would've made the same comment as BrewMan.
Why ?
I think you know the answer to this as you went on to explain how protected your machine is.
Wrong. That explanation was given to the "I hope your Win98 machine ins't connected to the internet." statement. If you want to claim I said stuff than do try to keep it in context, will you.

Ourlanguage could've been more gentle,
You can say that again. :-(
but I assure you (at least for me), no insult or disrespect was implied.
In that case my apologies. Fact is I've dealt with enough "only the latest version is worth anything" / "your version isn't worth anything" asswhipes to make me a tad touchy.

I guess when I read
In other words, case closed. v3.2.4.1 fixes the problem with not setting a keys data, and adding a key when it shouldn't isn't caused by AutoIt.
I interpreted that to mean you resolved it.
With all due respect, but read that again and than try to imagine how the problem would have been resolved. And as mentioned, the work-arounds I was able to create truly stink.

I however did resolve it a bit later though: I patched the dictionary object to return an error when the sought-for key does not exist.

You are now merely a user of the OS -- going along for the ride -- , while I'm still the owner of mine. :-)
Talk about disrespect and arrogance...you wear the hat well.
When you throw a ball do not be surprised when it bounces back into your own face.

Also, in most countries the truth is an absolute defence. Do you deny the above statement ?
Link to comment
Share on other sites

All I'm saying is I meant no disrespect.  I'm sorry you went on the defense about it, but you sir were the first one to make intentionally rude comments.  If that's not how you see it, so be it.  In terms of being at fault, we both are, part of the "fun" of communicating via text...I think we're done here.

Link to comment
Share on other sites

spudw2k,

All I'm saying is I meant no disrespect.
Than next time please think before you make a "lets repeat something someone else said" blanket statement like that. Especially when you have no intention to defend such a stance, nor wish to defend your own choices (which you have not mentioned anything about).

But alright. Lets try to forget it ever happened. :-)
Link to comment
Share on other sites

Tell me again how I am just a user of my Enterprise Win10 Build 14926.rs_prerelease.160910-1529 and you are the 'owner' of your Win98se, just because you are in prison does not mean that you run the place.

 I am going to say confidently, that you have close to ZERO first-hand knowledge of the way the new Win10 builds actually function and are spouting the telemetry and wares FUD from early releases.  My current box phones home on exactly one occasion, and that's when i submit a comment to the WindowsInsiders. 

 There are inherent flaws in win98se that will not be patched (not even if you are on MSFN every day of the week downloading every new hacked and backported patch)  that are exposing you to literally hundreds of drive-bys from every kiddie scripter with the latest metasploit or kali packages. Also you have a metric shit ton of obsolete certs and crypto packages that can still be force negotiated even if better/newer/shinier are available.  Just because your box is completely uninteresting does not mean it is not open wider than goatse.

And I dont care if anyone takes offense, espousing the benefits of Win98SE is relegated to how great CS1.5 runs. The security is bollocks.

Edited by iamtheky

,-. .--. ________ .-. .-. ,---. ,-. .-. .-. .-.
|(| / /\ \ |\ /| |__ __||| | | || .-' | |/ / \ \_/ )/
(_) / /__\ \ |(\ / | )| | | `-' | | `-. | | / __ \ (_)
| | | __ | (_)\/ | (_) | | .-. | | .-' | | \ |__| ) (
| | | | |)| | \ / | | | | | |)| | `--. | |) \ | |
`-' |_| (_) | |\/| | `-' /( (_)/( __.' |((_)-' /(_|
'-' '-' (__) (__) (_) (__)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...