Skip to content
⌘ NSIS Forum Archive

String Compare with more results

10 posts

Speed78#

String Compare with more results

Hi,

i need a function who compares a string and returns the results "greater than" or "lower than". It´s basically the same function like IntCmpU but only with strings. Are such a function available?

Best Regards

Rainer Budde
Joel#
Maybe, but you can try this: 🙂

SetCompressor lzma
XPStyle on
Name "Lobo Lunar"
OutFile "Hi.exe"
BrandingText "Lobo Lunar"
InstallDir "$EXEDIR"
ShowInstDetails show

Page instfiles "" "inst_show" ""

Function "inst_show"

StrCpy $1 "Holann" #input 1st. string
StrCpy $2 "Hello" #input 2nd. string

StrLen $0 $1 # 1st. string len.
StrLen $R0 $2 # 2nd. string len.

IntCmp $0 $R0 Equal Less More #Compare 1st with 2nd string, if 1st string is...

Equal: # If the 1st and the 2nd are the same:
DetailPrint "$1 and $2 are the same ($0)"
goto Exit

Less: # If 1st string is less...
DetailPrint "$1($0) is less than $2($R0)"
goto Exit

More: #If 1st is bigger....
DetailPrint "$1($0) is bigger than $2($R0)"
goto Exit

Exit: # The end
FunctionEnd

Section "-default"
; Nothing...
SectionEnd
Speed78#
Hi,

thanks for your answer. But I your function checks the length of the two strings. I need a function who compares to strings. For example:

1. String: "abc"
2. String: "ABC"

Best regards

Rainer
Speed78#
Originally posted by Lobo Lunar
Do you ment uppercase vs. lowercase?
No, I don´t! For example: I have two strings:

1. String "1.11"
2. String "1.12"

Now I want compare both strings which is greater than the other. In Delphi I do this for example:

If AString1 >= AString2 then
ShowMessage('1st String is greater or equal')
else
ShowMessage('1st Strings is lower')

Maybe I can convert the two strings in double values and compare this. But I dont know how to do this?

Best Regards

Rainer
zimsms#
I believe StrCmp, is what you are after.

StrCmp "str1" "str2" jump_if_equal [jump_if_not_equal]

ie:

StrCmp "1" "2" lblEqual lblNotEqual
lblEqual:
MessageBox mb_ok "Equal"
goto lblDone
lblNotEqual:
MessageBox mb_ok "Not Equal"

lblDone:
Not exactly safe....but it is close to what you asked for...

The best way to do this is to use the version checking string function in the archive.
Speed78#
Hi,

Originally posted by zimsms
I believe StrCmp, is what you are after.

StrCmp "str1" "str2" jump_if_equal [jump_if_not_equal]

ie:

StrCmp "1" "2" lblEqual lblNotEqual
lblEqual:
MessageBox mb_ok "Equal"
goto lblDone
lblNotEqual:
MessageBox mb_ok "Not Equal"

lblDone:
Not exactly safe....but it is close to what you asked for...
That doesn´t help me!


The best way to do this is to use the version checking string function in the archive.
But I think this function helps me. I´ve searched for this function but I can´t find it. Where can I find this function?

Best regards

Rainer
Joel#
Originally posted by Speed78
[B]No, I don´t! For example: I have two strings:

1. String "1.11"
2. String "1.12"

If AString1 >= AString2 then
ShowMessage('1st String is greater or equal')
else
ShowMessage('1st Strings is lower')
I don't know Delphi, but you can't compare like that strings, I think you are comparing the numbers not the strings.

According to the above example, there's one web archive.
Dotted Comparison Script
Speed78#
Hi,

thx for your answer.

Originally posted by Lobo Lunar
I don't know Delphi, but you can't compare like that strings, I think you are comparing the numbers not the strings.

According to the above example, there's one web archive.
Dotted Comparison Script
This is what I need.

Best regards

Rainer