Valik Posted December 4, 2009 Share Posted December 4, 2009 Really, go get a real book. You're missing some basics. Whatever you're attempting to learn from is absolute garbage. I have never seen anyone who is unable to define a function. Link to comment Share on other sites More sharing options...
gte Posted December 4, 2009 Author Share Posted December 4, 2009 Yes, the book for the class is all pseudocode and I have learned almost nothing from it, anything I have picked up has been from this sitehttp://www.cplusplus.comI saw your post about books, so if I can get a text version of the second book you recommended (that was easier to read) I will buy it.Today I learned that you can define a functions return value by putting int or whatever in front of them, so that's a little progress. My function is defined (after the syntax was explained to me) now and working, but when I put a letter into it, it loops endlessly, so now I have to figure out how to write an isalpha or isnumeric while statement for error checking.If you have any other beginner books that I can get on amazon, I'm all ears.Really, go get a real book. You're missing some basics. Whatever you're attempting to learn from is absolute garbage. I have never seen anyone who is unable to define a function. HP OpenView ServiceCenter keep alive scriptRemote Desktop Login Script Link to comment Share on other sites More sharing options...
turbov21 Posted December 5, 2009 Share Posted December 5, 2009 I understand gcc and g++ are the same, thus g++ uses gcc.Ah, well, I guess that's why they're equally reliable. Link to comment Share on other sites More sharing options...
jeanbern Posted December 5, 2009 Share Posted December 5, 2009 Ah, well, I guess that's why they're equally reliable.I'd have to agreeI don't often use c++but I was taught how to use it with gcc and haven't had a reason to move to anything else Link to comment Share on other sites More sharing options...
Valik Posted December 5, 2009 Share Posted December 5, 2009 I thought we established a long time ago in this thread that the problem wasn't the compiler but rather the learning materials failing to adequately educate in how to use the language? Quite honestly, if the OP is so confused and can't manage to use Visual C++ correctly then beyond lost is all that can be hoped for with gcc. Link to comment Share on other sites More sharing options...
gte Posted December 22, 2009 Author Share Posted December 22, 2009 I wanted to thank everyone that replied and offered reading material for me to take in, since my psuedocode book was pretty much worthless. Here was my final project that I wrote for the class. I have a ton to learn, but came a long way since giving up on the book and using much better materials such as the books and sites pointed at in this thread. The code for my final project (a mortgage calculator is below) . I had a lot of trouble with data validation (this is so much easier in autoit!) going into endless loops, and I had help with that, but the rest of the program I wrote without help. I'm going to read more over the winter break about c and c++ object oriented stuff, and see if I want to take another class in the spring semester. Long story short, thanks for the communal help! expandcollapse popup// finalproject.cpp : main project file. #include"stdafx.h" #include<iostream> #include <string> #include <cctype> #include <math.h> using namespace System; using namespace std ; //Global Variables int $skipamortizationtabletablelocation ; float _calculatecurrentmortgage(float $calculatecurrentmortgagevar1, float $calculatecurrentmortgagevar2, int $calculatecurrentmortgagevar3) { float $currentpaymenti = ((($calculatecurrentmortgagevar2 * .01) / 12) + 1) ; int $currentpaymentn = ($calculatecurrentmortgagevar3 * 12) ; float $currentpaymentnumerator = $calculatecurrentmortgagevar1 * ((($calculatecurrentmortgagevar2 * .01) / 12) * (pow ($currentpaymenti,$currentpaymentn))) ; float $currentpaymentdenominator = (pow($currentpaymenti,$currentpaymentn) -1) ; float $currentpaymentreturn = $currentpaymentnumerator / $currentpaymentdenominator ; return($currentpaymentreturn) ; } float _calculatetotalinterest(float $calculatetotalinterestvar1, int $calculatetotalinterestvar2, float $calculatetotalinterestvar3) { float $currenttotalinterest = ($calculatetotalinterestvar1 * ($calculatetotalinterestvar2 * 12)) - $calculatetotalinterestvar3 ; return($currenttotalinterest) ; } // principal //terminmonths //interestrate //monthly payment //years left //months left //should table be actual or theoretical float _amortizationtable(float $calculateamortizationvar1, int $calculateamortizationvar2, float $calculateamortizationvar3, float $calculateamortizationvar4, int $calculateamortizationvar5, int $calculateamortizationvar6, char $calculateamortizationvar7) { float $remainingprincipalamount = $calculateamortizationvar1 ; cout << "Month" << " " << "Payment" << " " << "Amount towards principal" << " " << "Amount towards interest" << " " << "Total Interest Paid" << " " << "Balance" << endl << endl ; for(int $i = 1; $i <= ($calculateamortizationvar2 * 12); $i++) { float $interestpaymentamount = $remainingprincipalamount * ($calculateamortizationvar3 / 1200) ; float $principalpaid = ($calculateamortizationvar4 - $interestpaymentamount) ; float $totalinterestpaid = ($totalinterestpaid + $interestpaymentamount) ; $remainingprincipalamount = ($remainingprincipalamount - $principalpaid) ; cout << $i << " " << $calculateamortizationvar4 << " " << $principalpaid << " " << $interestpaymentamount << " " << $totalinterestpaid << " " << $remainingprincipalamount << endl << endl ; if (($i == 60 ) || ($i == 120) || ($i == 180) || ($i == 240) || ($i == 300) || ($i == 360) || ($i == 420) || ($i == 480)) { system("Pause") ; } int $amortizationtablelocation ; if (($calculateamortizationvar7 != 'Y') || ($calculateamortizationvar7 != 'y')) { $amortizationtablelocation = (($calculateamortizationvar2 * 12) - (($calculateamortizationvar5 * 12) + $calculateamortizationvar6)) ; } if ($calculateamortizationvar7 == 'n') { if ($i == $amortizationtablelocation) { cout << endl << endl << " *** You're next payment month is here according to your input value *** " << endl << endl ; } } } return(0) ; } string ValidateStringInput(string $questionMessage, bool $Template) { int $k = 0; string $returnValue = ""; while (1) { // Get first name cout << $questionMessage; getline(cin, $returnValue); $k = 0; bool bRejected=false; for (unsigned int nIndex=0; nIndex < $returnValue.length() && !bRejected; nIndex++) { if (isalpha($returnValue[nIndex])) { if ($Template) { if (($returnValue[nIndex]=='Y') || ($returnValue[nIndex]=='N') || ($returnValue[nIndex]=='y') || ($returnValue[nIndex]=='n')) { $k = $k + 1; continue; } } else { $k = $k + 1; continue; } } if ($returnValue[nIndex]==' ') continue; cout << " *** Data Input Type Error *** (Alpha characters only, if Yes or No type Y or N)" << endl ; bRejected = true; } if ($Template) { if ($k == 0) bRejected = true; if ($k > 1) bRejected = true; } else { if ($k == 0) bRejected = true; } if (!bRejected) break; } return $returnValue; } int ValidateNumericData(string $questionMessage) { int $returnValue = 0; while (1) { cout << $questionMessage; cin >> $returnValue; if (cin.fail()) { cin.clear(); cin.ignore(1000, '\n'); cout << " *** Data Input Type Error *** (Whole Numbers Only)" << endl ; continue; } cin.ignore(1000, '\n'); if (cin.gcount() > 1) continue; if ($returnValue < 0) continue; break; } return $returnValue; } int ValidateRangeData(string $questionMessage, int $maxValue) { int $returnValue = 0; while (1) { cout << $questionMessage; cin >> $returnValue; if (cin.fail()) { cin.clear(); cin.ignore(1000, '\n'); cout << " *** Data Input Type Error *** (Only One Number Should be Entered)" << endl ; continue; } cin.ignore(1000, '\n'); if (cin.gcount() > 1) continue; if ($returnValue < 0) continue; if ($returnValue > $maxValue) continue; break; } return $returnValue; } float ValidateFloatData(string $questionMessage) { float $returnValue = 0.0f; while (1) { cout << $questionMessage; cin >> $returnValue; if (cin.fail()) { cin.clear(); cin.ignore(1000, '\n'); cout << " *** Data Input Type Error *** (Whole Numbers or Decimal Numbers Only)" << endl ; continue; } cin.ignore(1000, '\n'); if (cin.gcount() > 1) continue; if ($returnValue < 0) continue; break; } return $returnValue; } int main() { string $firstname ; string $pmiresponse ; string $redocalculationsresponse ; string $amortizationtableresponse ; string $continuecalculationsresponse ; string $pmiyes ; char $redocalculationsresponses ='N' ; int $testfunc1 = 0 ; int $testfunc2 = 0 ; int $k = 0; int $foobar2 = 0 ; int $yearsleft = 0 ; int $monthsleft = 0 ; int $changeoption = 0 ; int $currenthomevalue = 0 ; int $mortgageterminyears = 0; int $newmortgageterminyears = 0 ; int $amortizationtabledisplay = 0 ; float $totalinterest = 0.0f ; float $monthlypayment = 0.0f ; float $principalamount = 0.0f ; float $newinterestrate = 0.0f ; float $pmipaymentamount = 0.0f ; float $newprincipalamount = 0.0f ; float $extrapaymentamount = 0.0f ; float $totalinterestamount = 0.0f ; float $currentinterestrate = 0.0f ; float $currentpaymentamount = 0.0f ; float $newcurrentinterestrate = 0.0f ; float $newtotalinterestamount = 0.0f ; float $newcurrentpaymentamount = 0.0f ; cout << " Welcome to the mortgage calculation utility, \n " << " this program allows you to input your mortgage amount borrowed, \n " << " years borrowed for and fixed interest rate. \n " << " This program then allows you to see what your current \n " << " principal + interest payments are per month and gives you \n " << " the opportunity to see how long it would take you to pay off \n " << " your mortgage if you paid an additional amount towards the principal, \n " << " above and beyond the minimum monthly payment due. \n " << " This program will also allow you to change your interest rate to see\n " << " how that will affect your monthly mortgage principal + interest payment. \n" << " *** Please hit the enter key after each response. *** \n *** Do not include extra spaces *** . " << endl ; cout << endl ; $firstname = ValidateStringInput("1. Please enter your first name: ", false); cout << endl ; cout << " Thank you " << $firstname << " !!! \n " << " Now onto the calculations part of this program. \n " << " We will start with your current mortgage, \n " << endl ; $mortgageterminyears = ValidateNumericData("2. Please enter how many years your mortgage was for, originally : "); //cout << " Your mortgage : " << $mortgageterminyears << endl; yearsleft: $yearsleft = ValidateNumericData("3. Please enter how many years you have left on your current mortgage : "); //cout << " Your years left : " << $yearsleft << endl; if ($yearsleft >= $mortgageterminyears) { cout << endl << "Your years left in your mortgage CANNOT be equal to or greater than \n the mortgage term itself" << endl << endl ; goto yearsleft ; } $monthsleft = ValidateNumericData("4. Please enter how many months (0-11) you have left on the \n current mortgage year : "); //cout << " Your months left : " << $monthsleft << endl; $principalamount = ValidateFloatData("5. Please enter how much money (round to the nearest whole dollar) \n did you originally borrow from the bank? (NO COMMAS) \n (this is also known as your principal) : "); //cout << " Your principal : " << $principalamount << endl; $currentinterestrate = ValidateFloatData("6. Please enter what is your current fixed interest rate? \n (Format of X.X please) : "); //cout << " Your fixed interest rate : " << $currentinterestrate << endl; $currenthomevalue = ValidateFloatData("7. Please enter what is your home current value? (NO COMMAS) \n (round to the nearest whole dollar) : "); //cout << " Your homes current value : " << $currenthomevalue << endl; if (($currenthomevalue * .80) >= $principalamount) { cout << endl << " *** Your loan to value (LTV) ratio is good! \n You should NOT be paying private mortgage insurance. ***" << endl ; $pmiyes = " *** You should NOT be paying PMI because of your loan to value ratio. *** " ; } else if (($currenthomevalue * .80) < $principalamount) { $pmiyes = " *** You should be paying PMI because of your loan to value ratio. *** " ; } $currentpaymentamount = _calculatecurrentmortgage($principalamount, $currentinterestrate, $mortgageterminyears) ; $totalinterestamount = _calculatetotalinterest($currentpaymentamount, $mortgageterminyears, $principalamount) ; cout << endl << " Thanks. Your principal + interest payment is $" << $currentpaymentamount << " per month. \n " << " You will pay $" << $totalinterestamount << " of interest \n"<< " (on top of the principal) over the life of the loan." << endl << endl ; cout << $pmiyes << endl ; $pmiresponse = ValidateStringInput(" Do you currently pay private mortgage insurance? ( Y or N ) : ", true) ; // cout << " Your response is : " << $pmiresponse << endl; cout << endl ; if (($pmiresponse[0] == 'Y') || ($pmiresponse[0] == 'y')) { cout << "How much is your private mortgage insurance per month?" << endl ; cin >> $pmipaymentamount ; cout << endl << "Your payment with private mortgage insurance is " << $currentpaymentamount + $pmipaymentamount << endl << endl ; } else { $pmipaymentamount = 0 ; } cout << endl ; restartrecalculate: cout << "Would you like to perform the same calculations by changing one or more of the values? ( Y or N )" << endl ; cin >> $redocalculationsresponse; cout << endl ; if (($redocalculationsresponse[0] == 'Y') || ($redocalculationsresponse[0] == 'y')) { $redocalculationsresponses ='Y'; restart: do { string $pressmessage = " Now what would you like to change to see how your payment and total interest would change? \n Press 1 to change your loan/principal amount. \n Press 2 to change the term (length) of the loan. \n Press 3 to change the interest rate. \n Press 4 to recalculate, if done. \n Press 5 to restart. \n Press 0 to quit.\n"; $changeoption = ValidateRangeData($pressmessage, 5); //cout << " Your option is : " << $changeoption << endl; cout << endl ; switch ($changeoption) { case 1: $newprincipalamount = ValidateFloatData("What would be the amount of your new principal? (NO COMMAS) \n (The new dollar amount you are borrowing)"); break; case 2: $newmortgageterminyears = ValidateNumericData("How many years would you like the term of your loan to be for?"); break; case 3: $newcurrentinterestrate = ValidateFloatData("What would you like your new interest rate to be calculated at?"); break; case 4: cout << "Starting calculations over." << endl ; if($newprincipalamount == 0) { $newprincipalamount = $principalamount ; } if($newmortgageterminyears == 0) { $newmortgageterminyears = $mortgageterminyears ; } if($newcurrentinterestrate == 0) { $newcurrentinterestrate = $currentinterestrate ; } $newcurrentpaymentamount = _calculatecurrentmortgage($newprincipalamount, $newcurrentinterestrate, $newmortgageterminyears) ; $newtotalinterestamount = _calculatetotalinterest($newcurrentpaymentamount, $newmortgageterminyears, $newprincipalamount) ; cout << " Thanks. \n" << " Your principal + interest payment (and PMI if you input a PMI value) \n is $" << $newcurrentpaymentamount + $pmipaymentamount << " per month. \n" << " You will pay $" << $newtotalinterestamount << " of interest (on top of the principal) over the life of the loan." << endl ; // new payment output cout << endl ; $redocalculationsresponse[0] = 'Y' ; break; case 5: cout << "Starting calculations over." << endl ; $newprincipalamount = 0 ; $newmortgageterminyears = 0 ; $newcurrentinterestrate = 0 ; goto restart ; break; default : cout << endl << "Thank you for using this tool." << endl << endl ; system("PAUSE") ; return(0) ; break; } } while ($changeoption != 4); } else if (($redocalculationsresponse[0] == 'N') || ($redocalculationsresponse[0] == 'n')) { } else { cout << " *** Failed data input, a Y or N is required, try again. *** " << endl ; goto restartrecalculate ; } $amortizationtableresponse = ValidateStringInput("Would you like to see an amortization table? ( Y or N ) : ", true) ; if (($amortizationtableresponse[0] == 'Y') || ($amortizationtableresponse[0] == 'y')) { if($newprincipalamount == 0) { $newprincipalamount = $principalamount ; cout << "New principal amount: " << $newprincipalamount << endl ; } if($newmortgageterminyears == 0) { $newmortgageterminyears = $mortgageterminyears ; cout << "New mortgage term: " << $newmortgageterminyears << endl ; } if($newcurrentinterestrate == 0) { $newcurrentinterestrate = $currentinterestrate ; cout << "New interest rate: " << $newcurrentinterestrate << endl ; } if($newcurrentpaymentamount == 0) { $newcurrentpaymentamount = $currentpaymentamount ; cout << "New payment amount: " << $newcurrentpaymentamount << endl ; } $amortizationtabledisplay = _amortizationtable($newprincipalamount, $newmortgageterminyears, $newcurrentinterestrate, $newcurrentpaymentamount, $yearsleft, $monthsleft, $redocalculationsresponse[0]) ; } else if (($amortizationtableresponse[0] == 'N') || ($amortizationtableresponse[0] == 'n')) { } $continuecalculationsresponse = ValidateStringInput("Would you like to calculate another mortgage value? ( Y or N ) : ", true) ; if (($continuecalculationsresponse[0] == 'Y') || ($continuecalculationsresponse[0] == 'y')) { goto restart ; } else { cout << endl << " Thank you for using this tool " << $firstname << "." << endl << endl ; system("PAUSE") ; return 0; } } HP OpenView ServiceCenter keep alive scriptRemote Desktop Login Script Link to comment Share on other sites More sharing options...
Valik Posted December 22, 2009 Share Posted December 22, 2009 Just because C++ let's you use $ to prefix variables doesn't mean you should. That's... highly frowned upon and very atypical. Link to comment Share on other sites More sharing options...
bo8ster Posted December 22, 2009 Share Posted December 22, 2009 gte - great stuff, good to hear you pressed on and completed it. Valik is right, the $ in Autoit do not apply in C++. Good luck with the learning over the break Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic] Link to comment Share on other sites More sharing options...
gte Posted December 22, 2009 Author Share Posted December 22, 2009 I plan to transition away from the $ in my next project that I do, my instructor also said the same thing about variable declaration HP OpenView ServiceCenter keep alive scriptRemote Desktop Login Script Link to comment Share on other sites More sharing options...
danielkza Posted December 22, 2009 Share Posted December 22, 2009 I plan to transition away from the $ in my next project that I do, my instructor also said the same thing about variable declarationIt seems to me you have not used the '$' anywhere other than in variable names. Therefore, you can just replace all of them with nothing in whatever editor/IDE you're using. Link to comment Share on other sites More sharing options...
Valik Posted December 22, 2009 Share Posted December 22, 2009 You need to read a style guide (but don't take it as gospel, read more than one if possible). Your variable names are way too long. For names that long you need to use CamelCase or something to differentiate work-breaks because the code might as well be obfuscated. The names should also just be shorter no matter what naming convention you use. Don't name functions with a leading underscore. This is typically reserved for the compiler vendor. While you can do it in your code (obviously), it's not a good idea to do so. Where are you getting these bad habits? I've never seen anyone start C/C++ and have these particular bad habits. Link to comment Share on other sites More sharing options...
monoceres Posted December 23, 2009 Share Posted December 23, 2009 I wanted to thank everyone that replied and offered reading material for me to take in, since my psuedocode book was pretty much worthless.Here was my final project that I wrote for the class. I have a ton to learn, but came a long way since giving up on the book and using much better materials such as the books and sites pointed at in this thread.The code for my final project (a mortgage calculator is below) . I had a lot of trouble with data validation (this is so much easier in autoit!) going into endless loops, and I had help with that, but the rest of the program I wrote without help. I'm going to read more over the winter break about c and c++ object oriented stuff, and see if I want to take another class in the spring semester.Long story short, thanks for the communal help! I saw a goto in there! Goto's are removed from most modern languages for a reason. You better just forget it exists.Here's something to think about before putting down those characters. GOTOA good style guide to read is google's, I don't agree with everything but I tend to think about it while coding because I know it makes sense.http://google-styleguide.googlecode.com/svn/trunk/cppguide.xmlPut much energy on learning OO properly! Dividing a program into objects makes the source very readable and maintanable. C++ greatest strength (imo) is that it combines low-level code with high level objects. Broken link? PM me and I'll send you the file! Link to comment Share on other sites More sharing options...
Valik Posted December 23, 2009 Share Posted December 23, 2009 Wow, goto. I didn't catch that. I think you may be tainted for life. You have picked up on some of the worst things you can do. I guess you aren't reading any of the books I recommended after all because none of the bad habits you are demonstrating are present. Honestly? I hope you fail the project because that's the only hope the class is actually worth taking. If you don't fail for the use of goto then the class is a sham. Link to comment Share on other sites More sharing options...
gte Posted December 23, 2009 Author Share Posted December 23, 2009 The $ was from AIT of course, the underscore was from a coworker. I really liked the underscore thing? It makes me reading my own code easier.How do you differentiate variables and functions, if at all?You need to read a style guide (but don't take it as gospel, read more than one if possible). Your variable names are way too long. For names that long you need to use CamelCase or something to differentiate work-breaks because the code might as well be obfuscated. The names should also just be shorter no matter what naming convention you use.Don't name functions with a leading underscore. This is typically reserved for the compiler vendor. While you can do it in your code (obviously), it's not a good idea to do so.Where are you getting these bad habits? I've never seen anyone start C/C++ and have these particular bad habits. HP OpenView ServiceCenter keep alive scriptRemote Desktop Login Script Link to comment Share on other sites More sharing options...
gte Posted December 23, 2009 Author Share Posted December 23, 2009 That's pretty ignorant ... you seem to have forgotten what is was like when you first started coding (be it with c++ or whatever language you started with) . Maybe go back and look at your code, if you still have it and see if all of it fit within best practice code recommendations.Anyway, I got 100%Honestly? I hope you fail the project because that's the only hope the class is actually worth taking. If you don't fail for the use of goto then the class is a sham. HP OpenView ServiceCenter keep alive scriptRemote Desktop Login Script Link to comment Share on other sites More sharing options...
Valik Posted December 23, 2009 Share Posted December 23, 2009 The $ was from AIT of course, the underscore was from a coworker. I really liked the underscore thing? It makes me reading my own code easier.The co-worker has apparently never encountered Standard C++ where functions with a leading underscore are reserved for the compiler vendor.How do you differentiate variables and functions, if at all?By using naming conventions to name variables and functions.That's pretty ignorant ... you seem to have forgotten what is was like when you first started coding (be it with c++ or whatever language you started with) . Maybe go back and look at your code, if you still have it and see if all of it fit within best practice code recommendations.Of course not. But I didn't do some rather obscure stuff like prefix variables with dollar signs (even though I was familiar with that notation from AutoIt and other languages). I didn't have excessively long variable names. I had actually read a lot of code before I ever started writing code so I had some idea how code was supposed to look. I was able to write readable code when I started out, even if it wasn't the most logically sound or the most technically correct.Anyway, I got 100%Then quite honestly the course isn't going to teach you the right things. Any professor who allows goto in student's code is allowing them to learn to be bad programmers. There's absolutely no way your code is worth 100%. It loses marks for being non-standard or at the very least highly atypical of real world. What good is a course that doesn't teach you right from wrong? And the previous excuse of being new doesn't really cut it. I remember reading a lot of code. Yes, you pick up bad habits that way. In general though you don't pick up multiple bad habits. Link to comment Share on other sites More sharing options...
gte Posted December 23, 2009 Author Share Posted December 23, 2009 Well now that the course is over, I have more time to read books other than the text book or things directly related to accomplishing the tasks assigned by the instructor or the text book. HP OpenView ServiceCenter keep alive scriptRemote Desktop Login Script Link to comment Share on other sites More sharing options...
bo8ster Posted January 20, 2010 Share Posted January 20, 2010 Well done on passing. Does not matter you make mistakes when you are learning as long as you learn from them On my last project, the lead dev decided to use gotos instead of try-catch statements, somethings three deep. It was like watching the Titanic when you know what is going to happen, there were issues. You don't have understand the implications of using bad practices like gotos, just know NEVER to use them, there is a reason why Valik and monoceres are so against them. Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now