BarTender project - exporting printer code templates - Follow-up











up vote
-1
down vote

favorite












This is a follow up to a previous question
previous question: BarTender project - exporting printer code templates



Second Revision: Bartender Project - exporting printer code templates - Follow-up-2



From the first edit to this, I have changed the program use less of a procedural approach. Is this too much? When do you start breaking things into a separate class?



I feel like I'm stretching to make the bottom functions (but at the same time, it is a lot easier to read)



using System;

namespace BarTender
{
class btExport
{

// Used for manual input
static private string input = null;
static private string output = null;
// Dummy Variable
private const string DataExportPath = "";
// Declare a BarTender application variable
static private BarTender.Application bartenderApp;
// Declare a BarTender document variable
static private BarTender.Format format;
// Declare a BarTender printer code template variable
static private BarTender.PrinterCodeTemplate printerCodeTemplate;
// Declare an object variable
static private System.Object obj = null;

static void Main(string args)
{
///////////////////////////////////////////
/* START OF BARTENDER SIDE */
///////////////////////////////////////////

// Only start BarTender when needed, otherwise use old instances
try
{
// Store this instance as an object variable in C#
object newBtApp = System.Runtime.InteropServices.Marshal.GetActiveObject("BarTender.Application");

// Convert the object variable to a BarTender application variable
bartenderApp = newBtApp as BarTender.Application;
}
catch
{
bartenderApp = new BarTender.Application();
}

// Set the BarTender application visible
bartenderApp.Visible = true;


////////////////////////////////////////

/* START LOGIC */

////////////////////////////////////////

// If run without parameters this 'if' is triggered for manual entry
if (args.Length == 0)
{
manualInput();
}
// Taking parameters from Main
else
{
input = args[0];
Console.WriteLine("Input File Path:" + input);
output = args[1];
Console.WriteLine("Output File Path:" + output);

}

// Open a BarTender document
openBartenderDoc();
// End the BarTender process
bartenderApp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);

Console.WriteLine("Complete");
}

/////////////////////////////////////////////////////

static private string manualInput()
{
int startForTrim = 0;

Console.WriteLine("No parameters specified. n Enter manually or try again.");
Console.Write("Input: ");
input = Console.ReadLine();
startForTrim = input.Length - 4;
output = input.Remove(startForTrim, 4);
output = output += "prn"";
Console.WriteLine(output);

return output;
}

static private void openBartenderDoc()
{
try
{
format = bartenderApp.Formats.Open(""" + input + """, false, "");

// Specify the password to remove print-only protection from the application

bartenderApp.SpecifyPrintOnlyPassword("#Betsy");

// Set the printer code template variable
printerCodeTemplate = format.PrinterCodeTemplate;

// Export the printer code template
printerCodeTemplate.Export("SAPscript-ITF", BarTender.BtPctExportType.btPctExportCombined, output, DataExportPath, ref obj);
}
catch { Console.WriteLine("Input or Export file does not exist."); Console.ReadLine(); return; }
}

}
}









share|improve this question




















  • 3




    See my answer to your previous post - several points still apply to this version. Specific to this version, using static fields to 'communicate' between methods makes it difficult to see how they depend on each other. It's better to use parameters and return values instead (more descriptive, dependencies are more visible, and it's more difficult to use the code incorrectly). Variables that are only used in one method should be local variables, not fields.
    – Pieter Witvoet
    Dec 11 at 20:48










  • @PieterWitvoet There should be close reson like OP does not listen to reviews and their suggestions ;-)
    – t3chb0t
    Dec 12 at 15:56










  • @t3chb0t: fortunately that's not the case here: the OP quickly implemented several suggestions from another review before I could finish up mine. ;)
    – Pieter Witvoet
    Dec 12 at 16:36










  • I didn't leave you hanging Pieter! I'm working on the updates on my free time and am going one by one through the list and then my code! Taking the time to type that suggestion out definitely warrants an implementation!
    – C. Catt
    Dec 12 at 19:25










  • Also, I am unsure of what you mean by your last comment on my original post about C# using VAR because a variable's type is generally understood?
    – C. Catt
    Dec 14 at 20:39















up vote
-1
down vote

favorite












This is a follow up to a previous question
previous question: BarTender project - exporting printer code templates



Second Revision: Bartender Project - exporting printer code templates - Follow-up-2



From the first edit to this, I have changed the program use less of a procedural approach. Is this too much? When do you start breaking things into a separate class?



I feel like I'm stretching to make the bottom functions (but at the same time, it is a lot easier to read)



using System;

namespace BarTender
{
class btExport
{

// Used for manual input
static private string input = null;
static private string output = null;
// Dummy Variable
private const string DataExportPath = "";
// Declare a BarTender application variable
static private BarTender.Application bartenderApp;
// Declare a BarTender document variable
static private BarTender.Format format;
// Declare a BarTender printer code template variable
static private BarTender.PrinterCodeTemplate printerCodeTemplate;
// Declare an object variable
static private System.Object obj = null;

static void Main(string args)
{
///////////////////////////////////////////
/* START OF BARTENDER SIDE */
///////////////////////////////////////////

// Only start BarTender when needed, otherwise use old instances
try
{
// Store this instance as an object variable in C#
object newBtApp = System.Runtime.InteropServices.Marshal.GetActiveObject("BarTender.Application");

// Convert the object variable to a BarTender application variable
bartenderApp = newBtApp as BarTender.Application;
}
catch
{
bartenderApp = new BarTender.Application();
}

// Set the BarTender application visible
bartenderApp.Visible = true;


////////////////////////////////////////

/* START LOGIC */

////////////////////////////////////////

// If run without parameters this 'if' is triggered for manual entry
if (args.Length == 0)
{
manualInput();
}
// Taking parameters from Main
else
{
input = args[0];
Console.WriteLine("Input File Path:" + input);
output = args[1];
Console.WriteLine("Output File Path:" + output);

}

// Open a BarTender document
openBartenderDoc();
// End the BarTender process
bartenderApp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);

Console.WriteLine("Complete");
}

/////////////////////////////////////////////////////

static private string manualInput()
{
int startForTrim = 0;

Console.WriteLine("No parameters specified. n Enter manually or try again.");
Console.Write("Input: ");
input = Console.ReadLine();
startForTrim = input.Length - 4;
output = input.Remove(startForTrim, 4);
output = output += "prn"";
Console.WriteLine(output);

return output;
}

static private void openBartenderDoc()
{
try
{
format = bartenderApp.Formats.Open(""" + input + """, false, "");

// Specify the password to remove print-only protection from the application

bartenderApp.SpecifyPrintOnlyPassword("#Betsy");

// Set the printer code template variable
printerCodeTemplate = format.PrinterCodeTemplate;

// Export the printer code template
printerCodeTemplate.Export("SAPscript-ITF", BarTender.BtPctExportType.btPctExportCombined, output, DataExportPath, ref obj);
}
catch { Console.WriteLine("Input or Export file does not exist."); Console.ReadLine(); return; }
}

}
}









share|improve this question




















  • 3




    See my answer to your previous post - several points still apply to this version. Specific to this version, using static fields to 'communicate' between methods makes it difficult to see how they depend on each other. It's better to use parameters and return values instead (more descriptive, dependencies are more visible, and it's more difficult to use the code incorrectly). Variables that are only used in one method should be local variables, not fields.
    – Pieter Witvoet
    Dec 11 at 20:48










  • @PieterWitvoet There should be close reson like OP does not listen to reviews and their suggestions ;-)
    – t3chb0t
    Dec 12 at 15:56










  • @t3chb0t: fortunately that's not the case here: the OP quickly implemented several suggestions from another review before I could finish up mine. ;)
    – Pieter Witvoet
    Dec 12 at 16:36










  • I didn't leave you hanging Pieter! I'm working on the updates on my free time and am going one by one through the list and then my code! Taking the time to type that suggestion out definitely warrants an implementation!
    – C. Catt
    Dec 12 at 19:25










  • Also, I am unsure of what you mean by your last comment on my original post about C# using VAR because a variable's type is generally understood?
    – C. Catt
    Dec 14 at 20:39













up vote
-1
down vote

favorite









up vote
-1
down vote

favorite











This is a follow up to a previous question
previous question: BarTender project - exporting printer code templates



Second Revision: Bartender Project - exporting printer code templates - Follow-up-2



From the first edit to this, I have changed the program use less of a procedural approach. Is this too much? When do you start breaking things into a separate class?



I feel like I'm stretching to make the bottom functions (but at the same time, it is a lot easier to read)



using System;

namespace BarTender
{
class btExport
{

// Used for manual input
static private string input = null;
static private string output = null;
// Dummy Variable
private const string DataExportPath = "";
// Declare a BarTender application variable
static private BarTender.Application bartenderApp;
// Declare a BarTender document variable
static private BarTender.Format format;
// Declare a BarTender printer code template variable
static private BarTender.PrinterCodeTemplate printerCodeTemplate;
// Declare an object variable
static private System.Object obj = null;

static void Main(string args)
{
///////////////////////////////////////////
/* START OF BARTENDER SIDE */
///////////////////////////////////////////

// Only start BarTender when needed, otherwise use old instances
try
{
// Store this instance as an object variable in C#
object newBtApp = System.Runtime.InteropServices.Marshal.GetActiveObject("BarTender.Application");

// Convert the object variable to a BarTender application variable
bartenderApp = newBtApp as BarTender.Application;
}
catch
{
bartenderApp = new BarTender.Application();
}

// Set the BarTender application visible
bartenderApp.Visible = true;


////////////////////////////////////////

/* START LOGIC */

////////////////////////////////////////

// If run without parameters this 'if' is triggered for manual entry
if (args.Length == 0)
{
manualInput();
}
// Taking parameters from Main
else
{
input = args[0];
Console.WriteLine("Input File Path:" + input);
output = args[1];
Console.WriteLine("Output File Path:" + output);

}

// Open a BarTender document
openBartenderDoc();
// End the BarTender process
bartenderApp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);

Console.WriteLine("Complete");
}

/////////////////////////////////////////////////////

static private string manualInput()
{
int startForTrim = 0;

Console.WriteLine("No parameters specified. n Enter manually or try again.");
Console.Write("Input: ");
input = Console.ReadLine();
startForTrim = input.Length - 4;
output = input.Remove(startForTrim, 4);
output = output += "prn"";
Console.WriteLine(output);

return output;
}

static private void openBartenderDoc()
{
try
{
format = bartenderApp.Formats.Open(""" + input + """, false, "");

// Specify the password to remove print-only protection from the application

bartenderApp.SpecifyPrintOnlyPassword("#Betsy");

// Set the printer code template variable
printerCodeTemplate = format.PrinterCodeTemplate;

// Export the printer code template
printerCodeTemplate.Export("SAPscript-ITF", BarTender.BtPctExportType.btPctExportCombined, output, DataExportPath, ref obj);
}
catch { Console.WriteLine("Input or Export file does not exist."); Console.ReadLine(); return; }
}

}
}









share|improve this question















This is a follow up to a previous question
previous question: BarTender project - exporting printer code templates



Second Revision: Bartender Project - exporting printer code templates - Follow-up-2



From the first edit to this, I have changed the program use less of a procedural approach. Is this too much? When do you start breaking things into a separate class?



I feel like I'm stretching to make the bottom functions (but at the same time, it is a lot easier to read)



using System;

namespace BarTender
{
class btExport
{

// Used for manual input
static private string input = null;
static private string output = null;
// Dummy Variable
private const string DataExportPath = "";
// Declare a BarTender application variable
static private BarTender.Application bartenderApp;
// Declare a BarTender document variable
static private BarTender.Format format;
// Declare a BarTender printer code template variable
static private BarTender.PrinterCodeTemplate printerCodeTemplate;
// Declare an object variable
static private System.Object obj = null;

static void Main(string args)
{
///////////////////////////////////////////
/* START OF BARTENDER SIDE */
///////////////////////////////////////////

// Only start BarTender when needed, otherwise use old instances
try
{
// Store this instance as an object variable in C#
object newBtApp = System.Runtime.InteropServices.Marshal.GetActiveObject("BarTender.Application");

// Convert the object variable to a BarTender application variable
bartenderApp = newBtApp as BarTender.Application;
}
catch
{
bartenderApp = new BarTender.Application();
}

// Set the BarTender application visible
bartenderApp.Visible = true;


////////////////////////////////////////

/* START LOGIC */

////////////////////////////////////////

// If run without parameters this 'if' is triggered for manual entry
if (args.Length == 0)
{
manualInput();
}
// Taking parameters from Main
else
{
input = args[0];
Console.WriteLine("Input File Path:" + input);
output = args[1];
Console.WriteLine("Output File Path:" + output);

}

// Open a BarTender document
openBartenderDoc();
// End the BarTender process
bartenderApp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);

Console.WriteLine("Complete");
}

/////////////////////////////////////////////////////

static private string manualInput()
{
int startForTrim = 0;

Console.WriteLine("No parameters specified. n Enter manually or try again.");
Console.Write("Input: ");
input = Console.ReadLine();
startForTrim = input.Length - 4;
output = input.Remove(startForTrim, 4);
output = output += "prn"";
Console.WriteLine(output);

return output;
}

static private void openBartenderDoc()
{
try
{
format = bartenderApp.Formats.Open(""" + input + """, false, "");

// Specify the password to remove print-only protection from the application

bartenderApp.SpecifyPrintOnlyPassword("#Betsy");

// Set the printer code template variable
printerCodeTemplate = format.PrinterCodeTemplate;

// Export the printer code template
printerCodeTemplate.Export("SAPscript-ITF", BarTender.BtPctExportType.btPctExportCombined, output, DataExportPath, ref obj);
}
catch { Console.WriteLine("Input or Export file does not exist."); Console.ReadLine(); return; }
}

}
}






c# beginner console






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 14 at 19:55

























asked Dec 11 at 20:20









C. Catt

64




64








  • 3




    See my answer to your previous post - several points still apply to this version. Specific to this version, using static fields to 'communicate' between methods makes it difficult to see how they depend on each other. It's better to use parameters and return values instead (more descriptive, dependencies are more visible, and it's more difficult to use the code incorrectly). Variables that are only used in one method should be local variables, not fields.
    – Pieter Witvoet
    Dec 11 at 20:48










  • @PieterWitvoet There should be close reson like OP does not listen to reviews and their suggestions ;-)
    – t3chb0t
    Dec 12 at 15:56










  • @t3chb0t: fortunately that's not the case here: the OP quickly implemented several suggestions from another review before I could finish up mine. ;)
    – Pieter Witvoet
    Dec 12 at 16:36










  • I didn't leave you hanging Pieter! I'm working on the updates on my free time and am going one by one through the list and then my code! Taking the time to type that suggestion out definitely warrants an implementation!
    – C. Catt
    Dec 12 at 19:25










  • Also, I am unsure of what you mean by your last comment on my original post about C# using VAR because a variable's type is generally understood?
    – C. Catt
    Dec 14 at 20:39














  • 3




    See my answer to your previous post - several points still apply to this version. Specific to this version, using static fields to 'communicate' between methods makes it difficult to see how they depend on each other. It's better to use parameters and return values instead (more descriptive, dependencies are more visible, and it's more difficult to use the code incorrectly). Variables that are only used in one method should be local variables, not fields.
    – Pieter Witvoet
    Dec 11 at 20:48










  • @PieterWitvoet There should be close reson like OP does not listen to reviews and their suggestions ;-)
    – t3chb0t
    Dec 12 at 15:56










  • @t3chb0t: fortunately that's not the case here: the OP quickly implemented several suggestions from another review before I could finish up mine. ;)
    – Pieter Witvoet
    Dec 12 at 16:36










  • I didn't leave you hanging Pieter! I'm working on the updates on my free time and am going one by one through the list and then my code! Taking the time to type that suggestion out definitely warrants an implementation!
    – C. Catt
    Dec 12 at 19:25










  • Also, I am unsure of what you mean by your last comment on my original post about C# using VAR because a variable's type is generally understood?
    – C. Catt
    Dec 14 at 20:39








3




3




See my answer to your previous post - several points still apply to this version. Specific to this version, using static fields to 'communicate' between methods makes it difficult to see how they depend on each other. It's better to use parameters and return values instead (more descriptive, dependencies are more visible, and it's more difficult to use the code incorrectly). Variables that are only used in one method should be local variables, not fields.
– Pieter Witvoet
Dec 11 at 20:48




See my answer to your previous post - several points still apply to this version. Specific to this version, using static fields to 'communicate' between methods makes it difficult to see how they depend on each other. It's better to use parameters and return values instead (more descriptive, dependencies are more visible, and it's more difficult to use the code incorrectly). Variables that are only used in one method should be local variables, not fields.
– Pieter Witvoet
Dec 11 at 20:48












@PieterWitvoet There should be close reson like OP does not listen to reviews and their suggestions ;-)
– t3chb0t
Dec 12 at 15:56




@PieterWitvoet There should be close reson like OP does not listen to reviews and their suggestions ;-)
– t3chb0t
Dec 12 at 15:56












@t3chb0t: fortunately that's not the case here: the OP quickly implemented several suggestions from another review before I could finish up mine. ;)
– Pieter Witvoet
Dec 12 at 16:36




@t3chb0t: fortunately that's not the case here: the OP quickly implemented several suggestions from another review before I could finish up mine. ;)
– Pieter Witvoet
Dec 12 at 16:36












I didn't leave you hanging Pieter! I'm working on the updates on my free time and am going one by one through the list and then my code! Taking the time to type that suggestion out definitely warrants an implementation!
– C. Catt
Dec 12 at 19:25




I didn't leave you hanging Pieter! I'm working on the updates on my free time and am going one by one through the list and then my code! Taking the time to type that suggestion out definitely warrants an implementation!
– C. Catt
Dec 12 at 19:25












Also, I am unsure of what you mean by your last comment on my original post about C# using VAR because a variable's type is generally understood?
– C. Catt
Dec 14 at 20:39




Also, I am unsure of what you mean by your last comment on my original post about C# using VAR because a variable's type is generally understood?
– C. Catt
Dec 14 at 20:39















active

oldest

votes











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");

StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f209472%2fbartender-project-exporting-printer-code-templates-follow-up%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown






























active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Code Review Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f209472%2fbartender-project-exporting-printer-code-templates-follow-up%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Список кардиналов, возведённых папой римским Каликстом III

Deduzione

Mysql.sock missing - “Can't connect to local MySQL server through socket”