Текст, которым посимвольно заполнить массив

egorprog

помогите пожалуйста, я вот уже несколько дней лажу в сети и ищу нормальный способ считать файл я нашёл как читать строку, как читать каждый символ в отдельности, но это не то у меня есть текст которым посимвольно нужно забить массив для дальнейших манипуляций. помогите пожалуйста, заранее благодарен
8 ответов

egorprog

я конечно не уверен что я прав, но если текст забить в переменную типа integer, то ты получишь в принципе массив, в котором каждый символ будет являтся элементом массива. но я сомневаюсь что это самый лучший способ.


egorprog

нет, немного не то мне нужно работать именно с текстом, так как мне нужно сделать кодирование простыми перестановками и как-бы нужно считывать и сразу работать с некоторыми символами и записывать их в переменную для вывода


egorprog

в смысле именно с текстом? чет я уже вкуривать аж перестал)))


egorprog

ну блин, смотри у меня есть текст в файле, мне нужно его загрузить в программу и переставив символы в определённом порядке вывести их в другой файл, так вот мне и нужно само действие считывания, везде наисано что нужно сначала считать строку а потом разбить её посимвольно так и вот как разбить то её посимвольно? и перейти потом на следующую сроку


egorprog

ну так ты и считываешь строку в переменную. она уже разбита на символы. т.е.
var
 s: string;
bedin
 s:= 'текст';
 ShowMessage(s[1]);
end;
кинь код в кнопку. и нажми ее.угадай какой символ ты увидишь?а для еще большей наглядности сделай вот так
var
 s: string;
 i, count: integer;
bedin
 s:= 'текст';
 count:= Length(s);
 //count = 5
 for i:= 1 to count do
  ShowMessage(s[i]);
end;
а насчет перехода по строкам, тоже легко оформится в цикл, ты же можешь легко узнать количество строк и количество символов в каждой строке. и вместо мемо посоветую юзать RichEdit, если будешь сохранять в файл то не забудь свойство PlainText в True установить. Я просто когда то писал прогу и мне нужно было кодировать картинку в Base64, а потом обратно, ничего у меня не получалось из-за того что я юзал Memo.наверное Мемо скорее всего и добавляет эти символы перехода строк и т.д.ух ты!!! я ошибся в первом посте, не интежер а СТРИНГ


egorprog

egorprog, Не советую RichEdit использовать. Он может ещё теги форматирования и раскраски повставлять в исходный текст. А чтобы Memo не вставляла мягких переносов нужно установить свойство WordWrap в False. Считать файл в Memo:
Memo1.Lines.LoadFromFile('Имя файла');
Если хочешь переставлять символы не меняя размер строк можно сразу взять второе Memo. Строки нумеруются с 0 до Memo1.Lines.Count-1.
Var
  s,s1 : String;
  i,j : Integer;
 
 
Memo2.Lines.Clear; //Очистим Memo2 для приёма закодированных строк
//Перебор строк...
For i:=0 To Memo1.Lines.Count-1 Do
Begin
  s:=Memo1.Lines[i];
  s1:=s; //Чтобы сохранилась длина строки
  //Каждый символ в строке имеет свой индекс начиная с 1 
  //Можно считать что у тебя уже есть массив s : Array[1..Length(s)] Of Char
  //Перебор символов и перестановка...
  For j:=1 To Length(s) Do
  Begin
    k:= //Вычислим номер в какую позицию переставить символ
    s1[k]:=s[j];
  End;
  //Записываем сформированную строку в Memo2
  Memo2.Lines.Add(s1);
End;
//После всех манипуляций сохраняем Memo2 в файл
Memo2.Lines.SaveFromFile('Имя файла');
Как то так.


egorprog

ну это уже "Решите за меня" получается)


egorprog

Чтой-то я сильно сомневаюсь что этот массив будет обрабатываться пользователем на экране.
Нужно просто соритровка по возрастанию и убыванию, чтобы визуално видеть эти данные.
Я поставил точки внутри цитаты потому что всё равно для меня изложено не понятно.
это сложно объяснить
Если да, тогда можно, конечно с любым файлом это сделать или с текстовым или с типизированным. Перебирай записи или строки, извлекай данные и сравнивай в цикле. Повторю только, что с типизированным файлом это будет проще реализовать.
Думаю, что надо мне с типизированным файлом работать.
Мой совет: Сохраняй все данные в массив и с этим массивом рабой. И не мучайся с файлом. Но может я чего то не понимаю. Тогда озвучивай задачу конкретно. В зависимости от задачи можно разные варианты решения применить.
Видишь, какая ... Эти данные наглядно хорошо бы видеть в таблице, сортировать по возрастанию и убыванию(относительно опред.значения) и проглядеть по новой табличку, как что изменяется. Это очень удобно.