`
Par2: Extracting strings from text 2001-11-25 -- Ray Goudie >What would be a smart way loop through a textfield (CSTRING(4001)) >extracting 80 character long rows and avoiding to split words? I had to do the same thing, a number of years ago. Here is some quick-and-dirty code that will achieve what you are looking for. It only splits on spaces. --- ROW_WIDTH equate(80) textField cstring(4001) rowText cstring(ROW_WIDTH + 1) textLength ushort startPosition ushort ndx ushort code !!! textField gets set somehow. textLength = len(textField) startPosition = 1 endPosition = ROW_WIDTH loop !!! Fetch default row width. rowText = sub(textField, startPosition, ROW_WIDTH) !!! Consider the first character of the next row. if textField[startPosition + ROW_WIDTH] <> ' ' !!! Reduce length of row while the last character of the current row is not a space. !!! Any characters at the end of the current row belong with characters at the !!! beginning of the next row. ndx = ROW_WIDTH loop while rowText[ndx] <> ' ' ndx -= 1 until ndx = 1 end rowText = clip(sub(rowText, startPosition, ndx)) !!! To clip trailing space(s). do processRow !!! Set start position for the next row. startPosition += ndx until startPosition > textLength --- Hope I didn't miss anything. Printed November 23, 2024, 11:12 pm This article has been viewed/printed 35205 times. |