0

I have a library which has the following function:

function strConcat(
    string memory _a,
    string memory _b
)
    internal pure
    returns (string memory)

My contract implements the library and uses the following:

using StringConverter for *;
...
uint minLevel = getStorageUint(
    r,
    ("_conf_").strConcat(pSetting),
    pSettingIndex,
    0
);

This is working, but if I change:

using StringConverter for string;

I can see the error:

TypeError: Member "strConcat" not found or not visible after argument-dependent lookup in literal_string "_conf_".
        ("_conf_").strConcat(pSetting),

What can I type at using to make it working correctly?

  • Can you try with for bytes32 – Niklas Feurstein Sep 3 at 18:38
  • Just tried, unfortunately, no effect, same error. – Radeg90 Sep 3 at 18:40
  • Can you link the library you are using? – Niklas Feurstein Sep 3 at 18:45
  • Sure, but library is working perfectly, the problem is with using. Took it from here: ethereum.stackexchange.com/questions/729/… It's kinda outdated, so you have to change string to string memory everywhere and i to uint i in loops (just tested on remix). – Radeg90 Sep 3 at 18:49
3

Try this solution:

First declare string variable:

string memory myVariable = "_conf_";

Then execute the concat.

myVariable.strConcat(pSetting);

I hope this works.

The problem you have comes arises, because

("_conf_").strConcat(pSetting)

doesn't explicitly create "_conf_" as a memory string.

  • This solves the problem but, to be honest, it's an ugly solution and probably more gas expensive. There must be a better way... Btw. It's not me who gave you minus. – Radeg90 Sep 3 at 19:01
  • Good to know. I update my answer. Maybe you try with this one: using StringConverter for bytes; – Niklas Feurstein Sep 3 at 19:04
  • Bytes didn't help either. :( I'm wondering what type does represent syntax ("anything"). It says it's literal_string but there isn't so much to read about it in solidity documentation, also can't put that at "using". – Radeg90 Sep 3 at 19:09
  • If you are just after keeping gas at a minimum you are best off sticking with for *. In my opinion it doesn't hurt that much. – Niklas Feurstein Sep 3 at 19:13
  • Okay. Thanks for your support. – Radeg90 Sep 3 at 19:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.