The Origin Forum
File Exchange
Try Origin for Free
The Origin Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ | Send File to Tech support
Username:
Password:
Save Password
Forgot your Password? | Admin Options

 All Forums
 Origin Forum for Programming
 LabTalk Forum
 Template names and character limitations (dash)
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic

ds755

57 Posts

Posted - 06/16/2018 :  1:56:06 PM  Show Profile  Edit Topic  Reply with Quote  View user's IP address  Delete Topic
Origin Ver. and Service Release (Select Help-->About Origin): Origin 2018 SR1
Operating System: Windows 8.1

Hello,

I have noticed that when I use Labtalk to create graphs using templates whose names have a dash (-), the command does not work. The graph is created but does not have the properties of the template. Once I remove the dashes, the command works. This is inconvenient, as I frequently use the dash as a delimiter, along with underscore (_).

Is there something I am missing or is this a fundamental limitation? Which characters will work as delimiters in template names, except underscore?

Thank you

Edited by - ds755 on 06/16/2018 1:56:58 PM

Chris D

428 Posts

Posted - 06/18/2018 :  09:04:41 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Hi,

Try enclosing the template name in double quotes.

For example:

plotxy (1,2) ogl:=<new template:="My-Template">


Thanks,
Chris Drozdowski
Originlab Technical Support

Edited by - Chris D on 06/18/2018 09:09:14 AM
Go to Top of Page

ds755

57 Posts

Posted - 06/18/2018 :  11:47:22 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Hi Chris,

Actually, my code looks more like this:

win -t p %(architecture$)_I_vs_time.otpu I_vs_t;

The "architecture" string is extracted from the filename. If the string has a dash, the command fails.

How could I go around this problem?
Go to Top of Page

Chris D

428 Posts

Posted - 06/18/2018 :  12:15:47 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Hi,

Try this:


string architecture$ = "My-Template"; // For testing. 

win -t p "%(architecture$)_I_vs_time.otpu" I_vs_t;



Notice I put the template name in double quotes.

Thanks,
Chris Drozdowski
Originlab Technical Support
Go to Top of Page

ds755

57 Posts

Posted - 06/18/2018 :  12:39:28 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
It works! But then why doesn't it work when the dash is fed in the string variable from the GetToken command?

(e.g. string architecture$ = sheetname.GetToken(2,"_")$;)
Go to Top of Page

Chris D

428 Posts

Posted - 06/18/2018 :  1:22:12 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Run this code and tell me what you get:


string sheetName$ = "Sheet1_A-Test";
string architecture$ = sheetname.GetToken(2,"_")$;
architecture$=;


It should output "A-Test" (without the quotes).

Thanks,
Chris Drozdowski
Originlab Technical Support
Go to Top of Page

ds755

57 Posts

Posted - 06/18/2018 :  2:09:00 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
I get exactly what you expected.
Go to Top of Page

Chris D

428 Posts

Posted - 06/18/2018 :  2:36:38 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Without seeing more of what you are going, it is hard to tell what is wrong because the last example shows correct parsing tokens containing "-"'s.

Perhaps you can provide more code.

Thanks,
Chris Drozdowski
Originlab Technical Support
Go to Top of Page

ds755

57 Posts

Posted - 06/18/2018 :  2:59:54 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
I can provide more code but we also need templates to fully investigate the problem, and I'm not sure how to upload one.

If your schedule allows, I would propose to investigate this problem with a "minimum working example".

For example, you can do the following test:

1. Create a blank text file named a_1-2.txt

2. Save a template as 1-2.otpu (and 1-2.emf). Please alter something from the default graph template, to make sure that you know when your template has loaded successfully.

3. Load the text file (import Single ASCII), run the following code and please tell me if the template loads successfully.

string sheetname$=page.longname$;
string arch$ = sheetname.GetToken(2,"_")$;
// arch$ should contain 1-2.txt

arch$ = arch.GetToken(1,".")$;
// arch$ should contain 1-2

win -t p %(arch$).otpu Test;
// A graph will be created


If the template does not load, perhaps you can try without the dashes.

In my case, the graph is created but without loading the template. I get the default graph template from Origin.

Edited by - ds755 on 06/18/2018 3:00:52 PM
Go to Top of Page

ds755

57 Posts

Posted - 06/18/2018 :  7:09:52 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
I think it drops the ball on %(arch$). Since it transforms arch$ into an integer variable, the dash becomes minus, which is probably parsed differently in the program.

In my previous example, %(arch$) will equal -1 (as in: 1-2=-1).

Also, it works if I use string registers (which I do not want to do, in general).

The code:

%K=arch$;
win -t p "%K.otpu" Test;


will load the template properly, even with the dashes, as no integer conversion occurs.

The code:

win -t p "arch$.otpu" Test;


will fail, with or without the quotes.

So, I guess my question translates to: how to load a template with string variables, while avoiding the conversion to an integer variable, as well as string registers.

Edited by - ds755 on 06/19/2018 1:24:52 PM
Go to Top of Page

cpyang

USA
1406 Posts

Posted - 06/19/2018 :  5:40:12 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
should be


win -t p "%(arch$).otpu" Test;



this is because you are using a string variable inside "", only string register can be used directly.

CP

Go to Top of Page

ds755

57 Posts

Posted - 06/19/2018 :  6:14:17 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
I see. So, the double quotes prevent the integer conversion.

It seems to work in my example. I will try this out in my code and come back if I encounter any more problems.

I really appreciate the help.

Edited by - ds755 on 06/20/2018 5:47:18 PM
Go to Top of Page
  Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
The Origin Forum © 2020 Originlab Corporation Go To Top Of Page
Snitz Forums 2000