mIRC Home    About    Download    Register    News    Help

Active Threads | Unanswered Past 24 hours | Past 48 hours | Past Week | Past Month | Past Year
Feature Suggestions Jump to new posts
Re: Editable Language Files Khaled Yesterday at 08:16 PM
I have just released a beta that includes some changes to /langdll and the types of issues it detects in translated resources.

Looking through the current set of translations, it is interesting to see how different translators have translated certain words, especially acronyms and capitalized words. For example, where mIRC was using "Url", some translations show it as "URL" (which is what it should be). Plurals have also been translated in different ways. Some translators have separated colons ":" from text, when they really should appear exactly as they do in the original English text, eg. "* /command:" has been translated as "* /command :" with a space before the colon. This can actually affect how a string is processed in some cases, so /langdll -d now reports this as an issue.

I have tried to keep the number of changes to the resources in the beta as minimal as possible. You can see the differences between mIRC v7.77 and the current beta by running the beta and then typing:

//langdll -d mirc777.exe $mircexe

Where mirc777.exe is the release version of v7.77.

A translator can also check their DLL for errors by typing:

//langdll -d mirc777.exe mirc-your-dll.dll
//langdll -d mirc-your-dll.dll $mircexe (when running the beta)

(The /langdll command parameters are /langdll -d oldversion newversion)

Any issues will be highlighted in red and prefixed with the word ""Error:".

Hopefully, we will iron out teething issues like the above over the next few releases, update/simplify resource strings to make their context clearer, and improve /langdll -d to cover more issues that translators need to look out for to make the translation process smoother.
16 2,643 Read More
Bug Reports Jump to new posts
mIRC beta Khaled Yesterday at 08:12 PM
The latest beta can be downloaded here and includes the following changes:

Beta v7.77.1065 changes:
1.Item 1, fixed.
2.Item 2, fixed.
3.Item 3, changed again to remove startup flicker on Windows 11.
4.Item 3, added alternative method of retrieving the titlebar button
icons/colors. This is disabled for now and may be used in future.
5.Item 4, added.
6.Added SCRAM support for channel binding with tls-unique /
tsl-server-endpoint / tls-exporter. However, no IRC servers currently
support these, so I was unable to test them. This is disabled for now
and may be used in future.
7.Added alternative /dns -mn method which supports specifying the DNS
server address as IPv6. This does not work under XP. This is disabled
for now and may be used in future.
8.Item 5, added. Works on Windows 7 onwards.
9.Item 6, added.
Note that the Windows taskbar does not support a "success" progress
bar color, like the switchbar/treebar progress bars.
10.Item 7, added.
11.Item 8, changed. This is still limited to hiding repeat away messages
for at most ten minutes.
12.Item 9, added.
13.Item 10, added. Experimented with SVG support using ThorVG. It uses
the Meson build system which outputs an... odd Visual Studio
solution file. So it took some tweaking to get it to work. mIRC can
now use NanoSVG, LunaSVG, or ThorVG. The current default is LunaSVG
as it is under active development, covers most SVG uses, has a
reasonable size, and is easy to build.
14.Item 11, extended. Added several new checks based on translations
seen and questions received so far, such as:

Changed a number of words that should be capitalized, such as COM, ID,
DNS, CAP, and removed plurals for some words where they were not

Checking for capitalized words, eg. if the English text contains the
word "CTCP", the translation should probably also contain it.

Checking for colons ":", eg. spacing, addition, removal, which should
be the same in the translation.

Translators, please run this beta and type:
//langdll -d mirc777.exe $mircexe
to see what has changed since v7.77.
//langdll -d mirc777.exe mirc-your-dll.dll
to check your DLL for errors. These will be highlighted in red and
prefixed with the word ""Error:".

Updated forum post to include issues to look out for:

15.Item 11, ResourceHacker was removing an old style from the saved
resource file that was causing /langdll -d to report an error due
to a dialog style change. This is now taken into account.
16.Item 12, extended.
17.Item 13, extended.
18.Item 14, fixed https://forums.mirc.com/ubbthreads.php/topics/272799
19.Item 15, fixed https://forums.mirc.com/ubbthreads.php/topics/272805
20.Item 11, fixed an issue with how icon resources are handled in
external language DLLs. It turns out that when /langdll -m creates
the language DLL, UpdateResource() is writing icon controls in dialogs
incorrectly. This looks like an UpdateResource() bug as it is being
provided with a pointer to the dialog resource that is in mIRC. I
have made changes to several dialogs that use icon controls to get
around this issue, so that they now display icons correctly when
loading the external language DLL.
21.Item 16, added.

1.Fixed SCRAM intermittent authentication bug.
2.Changed SCRAM nonce generation method to comply with RFC.
3.Fixed Aero theme helper windows startup flicker on Windows 11.
4.Added timestamp prefix to scripting error messages.
5.Added Windows taskbar support for DCC Send/Get desktop windows
taskbar button progress bar.
6.Added /window -qS:P switch that sets the S state and P percent
of the progress bar for a custom @window, where S = 0 disabled,
1 = in progress, 2 = success, 3 = error.
7.Added $window().pbstate/pbpercent properties to return the custom
@window progress bar state.
8.Changed "Hide away reminders" option to apply to all contexts.
9.Added /write and $read() support for WR switches where the line read
from a file is treated as the wildcard/regex.
10.Added support for loading SVG files using the LunaSVG library.
11.Extended /langdll -d compare method to highlight changes in
dialog/control/string style/size/position/format along with
keywords (prefixed by "Error:") to make spotting issues easier.
12.Extended Find dialog in windows so that if the editbox has the
focus and you press Shift+Enter, it searches forwards.
13.Extended Find dialog in windows to vertically center found
text and to highlight the line.
14.Fixed server list parsing gpf bug that was causing a random
crash on startup/while running.
15.Fixed $regml() bug relating to /F and empty groups.
16.Added /findtext -hc switches to show/clear highlight.
1 405,473 Read More
Scripts & Popups Jump to new posts
Re: $replace weirdness Wims Yesterday at 01:01 PM
Ah yes, the literal () are the real reason for this error.

Note1: if your literal () are balanced inside identifiers, there's no error: $replace((),(),a) returns 'a' correctly.
Note2: By parsing literal () inside identifiers, mIRC stops evaluating until the () are balanced again, $+((,$os,),$os) returns "(,$os,)10"
3 24 Read More
Scripts & Popups Jump to new posts
Re: Snotice Simo Yesterday at 12:44 PM
on ^1:snotice:*Client connecting*:{
if (!$window(@notice)) { aline @notice $1 ($5) $6 $7 $9 }
else { window -lke @notice 516 200 2182 1134 }
elseif (Operserv iswm $1) { echo -a $1- }
5 117 Read More
Feature Suggestions Jump to new posts
Re: $regsubex and \0 Wims Yesterday at 09:43 AM
The help file was updated smile , but we didn't get the new marker \@, is there a problem with adding new markers?
1 456 Read More
Bug Reports Jump to new posts
Re: $regml() /F and \G Wims 19/07/24 11:02 PM
Great. In the second thread I linked to, we were two to mention that the help file was a bit wrong, looking at the help file now it's still the same, could you edit some phrasing?:
$regex([name], text, pattern)

[quote]You can assign a name to a $regex() call which you can use later in $regml() to retrieve the list of matches.
I have been suggesting a lot that mIRC's regex implementation doesn't offer us the actual matches (aka full matches), mIRC only offers captured groups, I would really love to see full match available, and it's only about returning the positions of the actual matches, which are returned by PCRE. In any case here it says that $regml retrieves the list of matches but it retrieves the list of captured groups, not matches.

$regml([name], N, [&binvar])

This returns the Nth match returned by a call to $regex(), $regsub(), or $regsubex().
Same as above, $regml returns captured groups, not matches

$regmlex([name], M, N, [&binvar])

If the /g modifier is used with a pattern, multiple results can be returned for that pattern. This identifier allows you to retrieve these results, where M is the Mth result and N is the () capture group number in that result. If N is not specified, it defaults to 1.
It is not necessary for /g to be used to have multiple captured groups, the beginning suggesting that $regmlex can only be used with /g which is not true. And "results" should really be renamed to "matches" (.match property is correctly saying 'match number' not 'results' or anything), M is the Mth match number.

F - make back-references refer to () capture groups, which is how standard regex works.
It should say something like "F - Include non-participating capturing groups in the list of captured groups, which mIRC ignores by default.

Note: If the F modifier is not used, \N references in patterns and N indexes in identifiers refer to the order in which matches are found, and $regml() will not include empty matches.
should really just be removed, because /F has nothing to do with \N reference in the pattern, and it's not about N indexes in identifier referring to the order of which matches are found, and empty groups (not matches) are different from non participating group.

By the way, I've said in previous thread that I wasn't sure if knowing if a group participated in the match was 'important' or not, but it is, because with /F now, empty captured and non participating groups are both returning $null, $regml().pos can be used to tell, returning 0 for non participating groups.

7 138 Read More
Bug Reports Jump to new posts
Re: Crashing in 7.77/Windows 11 Khaled 19/07/24 04:43 PM
Yes, that's quite possible. If there is an issue with memory corruption at some point, this can trigger a crash later on. Even when mIRC is idle, it processes a large number of events/features in the background that involve memory access/allocation/etc.
13 409 Read More