Вобщем загорелся идеей но 4 или 5 лет не программировал. И тут меня осенило раз так всё наладилось на работе с коллегами (программер появился) то я переделаю хоть на асме пока интерес горит! Товарищи помогите если кто знает с кусками-паттернами (понять) а остальное я сам. Я ничего не прошу, я иероглифы переделывал а так температура у меня((( Единственное что прошу не стирать я тут впервой за много лет написал пост( Код (Text): /** * TextSplit is a service software for Ukrainian National Information Agency: * UKRINFORM 2011 * version 0.3 */ package textsplit; import java.util.ArrayList; /** * Main class * @author s.nepochatov */ public class TextSplit { /** * Maximum length of message */ public static int maxText = 15980; /** * System dependent line seporator */ public static String lineSeparator = System.getProperty("line.separator"); /** * Text separator example string */ public static String textSeparator = lineSeparator + lineSeparator; /** * ArrayList for store splited string */ public static ArrayList stringStack = new ArrayList(); /** * */ public static String[] stackPieces; /** * Input frame variable */ public static InputFrame inputApp = new InputFrame(); /** * Output frame variable */ public static OutputFrame outApp = new OutputFrame(inputApp, false); /** * @param args the command line arguments */ public static void main(String[] args) { inputApp.setVisible(true); System.out.println("НАЧАЛО РАБОТЫ"); } /** * Flushing stack to new split */ public static void FlushStack() { stringStack = new ArrayList(); outApp.out.setText(""); outApp.forwardButton.setEnabled(true); outApp.backwardButton.setEnabled(true); outApp.stateLabel.setText("Идёт обработка"); } /** * Split text method for EKOP messages */ public static void ekopSplit() { String input = inputApp.textField.getText(); System.out.println("Получен текст:" + input.length()); if (input.length() > maxText) { stackPieces = input.split(textSeparator); System.out.println("Количество 'кусков': " + stackPieces.length); String rstr = ""; for (int cpiece = 0; cpiece < stackPieces.length; cpiece++) { ekopFindHeader(cpiece); String cstr = stackPieces[cpiece]; if (cstr.isEmpty()) { continue; } System.out.println("'Кусок' номер " + cpiece); if (rstr.length() + cstr.length() > maxText) { if (!rstr.isEmpty()) { stringStack.add(rstr); System.out.println("Добавление результирующей строки"); rstr = cstr; } else { stringStack.add(cstr); System.out.println("Добавление текущей строки"); } } else { if (rstr.equals("")) { rstr = cstr; System.out.println("Присвоение строки"); } else { rstr = rstr + textSeparator + cstr; System.out.println("Сложение строк"); } } if (cpiece == stackPieces.length - 1) { stringStack.add(rstr); System.out.println("Добавление остаточной строки"); } } if (stringStack.isEmpty()) { System.out.println("Стек пуст!"); } else { outApp.showStack(); } } } public static void ekopFindHeader(Integer currentIndex) { String currentStr = stackPieces[currentIndex]; String currentCopy = currentStr.toUpperCase(); if (currentStr.equals(currentCopy)) { stackPieces[currentIndex + 1] = currentStr + textSeparator + stackPieces[currentIndex + 1]; stackPieces[currentIndex] = ""; } } public static void ekopFindHeaderOld(Integer currentIndex) { String inputStr = stackPieces[currentIndex]; Boolean isHeader = true; Boolean headerFound = false; Integer carretIndex = 0; String carret; String carretCopy; while (isHeader = true) { carret = String.valueOf(inputStr.charAt(carretIndex)); if (carret.equals(lineSeparator) | carret.equals("")) { carretIndex++; continue; } if (carret.equals(lineSeparator) | carretIndex == (inputStr.length() - 1)) { headerFound = true; break; } carretCopy = carret.toUpperCase(); if (carret.equals(carretCopy)) { carretIndex++; } else { isHeader = false; } } if (headerFound) { stackPieces[currentIndex + 1] = inputStr + textSeparator + stackPieces[currentIndex + 1]; stackPieces[currentIndex] = ""; } } } А ЕЩЕ ЗНАЕТЕ ТОВАРИЩИ Я ЕЩЕ НА АСМЕ ПОД КВАНТОВЫЕ КОМПЬЮТЕРЫ НАПИШУ, ЕЙ БОГУ, ТАМ ХОТЬ И ТРОИЧНАЯ СИСТЕМА.. НУ И ЕЕ В БАНЮ