Jump to content

Really Long Line - (Moved)


Recommended Posts

Hello,

I'm programming an automated email and have a line that is really long.  I am using SciTE as my console.   Here is that line in test.  

$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $aArray2[$i][3], $Subject, "This is a form letter meant for " & $aArray2[$i][1] &" "& $aArray2[$i][2]&"." & @CRLF & "The letters in "& $aArray2[$i][1] &" "& $aArray2[$i][2] & "'s first name are " &  $aArray2[$i][4] &" " & $aArray2[$i][5] &" "&$aArray2[$i][6] &" "& $aArray2[$i][7] &" "&$aArray2[$i][8] &" "& $aArray2[$i][9] & @CRLF & chr(13) & "Thank you." & chr(13) & " ", $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl) 

The body of the email that the $rc function is creating begins after $Subject and ends after chr(13) & " ",. That body is the primary cause of the length.  When this goes live, I can easily see adding 3000+ characters to this line.  Is there a line limit?  Is there a way to wrap text in SciTE?  Do you have a trick to break that line up into multiple lines for ease of coding and reading?

"Ideally I would like to be able to type text like this " & @CRLF &
"so that I could read what I am writing easily " & @CRLF &
"without having to keep scrolling to the right or " & @CRLF &
"to the left.  Scrolling is quite a pain in the neck " & @CRLF &
"and with 5000 characters, it might even become  " & @CRLF &
"a programming showstopper."

I am not able to pass this entire string as a variable because this string contains variables embedded in a for loop.  Thus, in so doing, I would multiplicate the loop.    I'll take any help I can get!

Link to comment
Share on other sites

Yes, you can wrap text in AutoIt with & _

and continue on the next line like this. Also, you could simply read a file that you store locally and replace specific sequences... like "|username|" with the actual user's name with StringReplace. I use water's OutlookEx UDF and do something similar with an Outlook template email.

Edit: That's a ampersand, a space, and an underscore there... kind of hard to see.

Edited by seadoggie01

All my code provided is Public Domain... but it may not work. ;) Use it, change it, break it, whatever you want.

Spoiler

My Humble Contributions:
Personal Function Documentation - A personal HelpFile for your functions
Acro.au3 UDF - Automating Acrobat Pro
ToDo Finder - Find #ToDo: lines in your scripts
UI-SimpleWrappers UDF - Use UI Automation more Simply-er
KeePass UDF - Automate KeePass, a password manager
InputBoxes - Simple Input boxes for various variable types

Link to comment
Share on other sites

  • Moderators

Moved to the appropriate forum, as the Developer General Discussion forum very clearly states:

Quote

General development and scripting discussions. If it's super geeky and you don't know where to put it - it's probably here.


Do not create AutoIt-related topics here, use the AutoIt General Help and Support or AutoIt Technical Discussion forums.

Moderation Team

Edited by JLogan3o13

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

Link to comment
Share on other sites

This help page lists AutoIt limits and defaults; the 3rd entry specifies 4095 chars as max linelength in scripts.

And welcome to the forums.:)

Link to comment
Share on other sites

; one line using continuation string
Global $sLongSingleLine
$sLongSingleLine = "Ideally I would like to be able to type text like this " & @CRLF & _
"so that I could read what I am writing easily " & @CRLF & _
"without having to keep scrolling to the right or " & @CRLF & _
"to the left.  Scrolling is quite a pain in the neck " & @CRLF & _
"and with 5000 characters, it might even become  " & @CRLF & _
"a programming showstopper."
MsgBox(0, "debug", $sLongSingleLine)



; basic approach avoiding character limit in single line
Global $sLongString
$sLongString = "Ideally I would like to be able to type text like this " & @CRLF
$sLongString &= "so that I could read what I am writing easily " & @CRLF
$sLongString &= "without having to keep scrolling to the right or " & @CRLF
$sLongString &= "to the left.  Scrolling is quite a pain in the neck " & @CRLF
$sLongString &= "and with 5000 characters, it might even become  " & @CRLF
$sLongString &= "a programming showstopper."
MsgBox(0, "debug", $sLongString)



; keeping the same basic format with the assumption that you want to iteratively parse variables later
Global $sLongStringWithVars
$sLongStringWithVars = "Ideally I would like to be able to type text like this " & @CRLF
$sLongStringWithVars &= "so that I could read what I am writing easily " & @CRLF
$sLongStringWithVars &= "without having to keep scrolling to $aArray2[$i][0] the right or " & @CRLF
$sLongStringWithVars &= "to the left.  Scrolling $aArray2[$i][1] is quite a pain in the neck " & @CRLF
$sLongStringWithVars &= "and with 5000 characters, it might even become  " & @CRLF
$sLongStringWithVars &= "a programming showstopper."

; some trivial substitutions to make
Global $aArray2[2][2] = [["Mr. Bob", "Yellow"], ["Mr. Fred", "Red"]]
Global $sLongStringWithVars_subs

; making the substitutions later in your code
; you can see how the search string could also be constructed by the loop, but hard coded here for clarity
For $i = 0 To 1
  $sLongStringWithVars_subs = StringReplace($sLongStringWithVars, "$aArray2[$i][0]", $aArray2[$i][0])
  $sLongStringWithVars_subs = StringReplace($sLongStringWithVars_subs, "$aArray2[$i][1]", $aArray2[$i][1])
  MsgBox(0, "debug", $sLongStringWithVars_subs)
Next

 

Edited by SlackerAl

Problem solving step 1: Write a simple, self-contained, running, replicator of your problem.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...