BBS: Inland Empire Archive Date: 02-17-93 (02:02) Number: 338 From: ROB MCKEE Refer#: NONE To: DANNY ROBINSON Recvd: NO Subj: Board Program Conf: (2) Quik_Bas
Hello Danny! You wrote in a message to All: DR> I am attempting to write a BBS program in QuickBasic v4.5. DR> I have a rough version of the program completed and being DR> tested by several people in my area. It uses QBFOSSIL45 to DR> [4] I am needing code for a word-wrap routine for the DR> message base. If anyone would have something like this, DR> I'd appreciate the source for it. Part one of JNKK.... ________O_/________________________| SNIP |______________________\_O_______ O \ | HERE | / O DEFINT A-Z SUB Wrap (a$, TheMessage() AS STRING * 80, RightMargin, TheLine) ' QBS DIST: No ' Why no QBS DIST? The Complete Code is forth Coming in a week or so.. ' a$ = the Message unwrapped ' RightMargin = Guesswhat?? <G> ' TheLine is a Pointer to high Message Line. ' This code will handle up to 16K of Message WhiteSpace$ = CHR$(10) + "ÿ ./" + CHR$(9) Origin = 0 ' Insert Unknown Origin just in case (Maybe Internet?) IF LEN(a$) < 16300 THEN a$ = a$ + CHR$(13) + "---" + CHR$(13) + " * Orgin: (Unknown)" END IF ' Weed out the Kludge Lines i = INSTR(a$, CHR$(1)) DO WHILE i a$ = LEFT$(a$, i - 1) + MID$(a$, INSTR(i + 1, a$ + CHR$(13),_ CHR$(13)) + 1) i = INSTR(a$, CHR$(1)) LOOP ' Weed Out Line Feeds.. In Fido they're not used (IE: Soft Returns) i = INSTR(a$, CHR$(10)) DO WHILE i a$ = LEFT$(a$, i - 1) + MID$(a$, i + 1) i = INSTR(a$, CHR$(10)) LOOP DO UNTIL a$ = "" CRinA = INSTR(a$ + CHR$(13), CHR$(13)) b$ = MID$(a$ + CHR$(13), 1, CRinA - 1) a$ = MID$(a$, CRinA + 1) DO UNTIL b$ = "" i = INSTR(b$ + CHR$(13), CHR$(13)) - 1 IF i < 80 THEN TheLine = TheLine + 1 TheMessage(TheLine) = MID$(b$, 1, i) b$ = MID$(b$, 2 + i) ELSE IF LEN(b$) > RightMargin THEN FOR t = RightMargin TO (RightMargin / 2) STEP -1 Ptr = Ptr + 1 IF INSTR(WhiteSpace$, MID$(b$, t, 1)) THEN EXIT FOR NEXT IF t > (RightMargin / 2) THEN TheLine = TheLine + 1 TheMessage(TheLine) = LEFT$(b$, t) b$ = MID$(b$, t + 1) ELSEIF t <= (RightMargin / 2) THEN TheLine = TheLine + 1 TheMessage(TheLine) = LEFT$(b$, RightMargin) b$ = MID$(b$, RightMargin + 1) END IF ELSE TheLine = TheLine + 1 TheMessage(TheLine) = b$ b$ = "" END IF END IF IF TheLine = 256 THEN EXIT DO ' Bail Out if Message is longer than 256 Lines LOOP IF TheLine = 256 THEN EXIT DO LOOP IF TheLine < 21 THEN FOR t = TheLine + 1 TO 21: TheMessage(TheLine) =_ SPACE$(80): NEXT t Top = 1: ' Lose Everything after Origin Line and Tear FOR t = 1 TO TheLine IF LEFT$(TheMessage(t) + " ", 4) = "--- " THEN Tear = True IF Tear AND ((LEFT$(TheMessage(t), 11) = " * Origin: ") = True) THEN FOR g = t + 1 TO 35 TheMessage(g) = "" NEXT TheLine = t: t = t + 1: EXIT FOR END IF NEXT END SUB ________O_/________________________| SNIP |______________________\_O_______ O \ | HERE | / O Line wrapping and message splitted accomplished by MsgSplit 2.00, a Victor Yiu, Scott Wunsch and Rob McKee creation. DR> P.S. Also, if anybody has any information for programming for Fidonet DR> compatibility, that would be appreciated too. But if DR> I can get the Hudson DR> message base taken care of, this won't be needed, as DR> the mailer utilities will DR> take care of the dirty work. DR> --- SuperBBS 1.17 Gamma-1 (Reg) DR> * Origin: The Emergency Room BBS So.Shore, Ky. DR> 606-932-4891 (1:2260/150) Another ramble from Rob $$ --- timEd/B6 * Origin: Scotty, Beam me up, there's no Fortran Programmers Here (1:125/411)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET