Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2007, 12:07   #1
KlErik
Пользователь
 
Аватар для KlErik
 
Регистрация: 09.01.2007
Сообщений: 18
По умолчанию проблема с Memo

Короче делаю прогу с мемо,и при нажатии кнопки должен выводиться текст, все нормально все выводиться, но только в каждой строке исчезают несколько последних символов, понятно что проблема в свойствах мемо, подскажите как изменить чтобы выводился весь текст!
KlErik вне форума Ответить с цитированием
Старый 18.05.2007, 12:30   #2
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

Покажи код, как ты выводишь в мемо текст.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 18.05.2007, 15:36   #3
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

ты ограничивал переменную типа String например так String[50]?
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 19.05.2007, 06:39   #4
KlErik
Пользователь
 
Аватар для KlErik
 
Регистрация: 09.01.2007
Сообщений: 18
По умолчанию

var
f: TextFile;fName: String[80]; // èìÿ ôàéëà
buf: String[80]; // áóôåð äëÿ ÷òåíèÿ èç ôàéëà
procedure TForm1.Button1Click(Sender: TObject);
begin
fName :='c:\data.txt'; AssignFile(f, fName);
Reset(f); // îòêðûòü äëÿ ÷òåíèÿ
if IOResult <> 0 then begin
MessageDlg('Îøèáêà äîñòóïà ê ôàéëó' + fName,mtError,[mbOk],0); exit; end;
// ÷òåíèå èç ôàéëà
while not EOF(f) do begin
readln(f, buf); // ïðî÷èòàòü ñòðîêó èç ôàéëà
Memo1.Lines.Add(buf); // äîáàâèòü ñòðîêó â ïîëå Memo1
end;
CloseFile(f);
end;
KlErik вне форума Ответить с цитированием
Старый 19.05.2007, 07:29   #5
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Вот оно и ограничение - buf: String[80], сделай просто buf: String - и всё нормально должно быть.

Кстати: fName: String[80]; - а это зачем? Имя файла может быть до 256 символов + путь = полное имя файла может быть намного больше 80 символов. - это так, замечание

P.S.: в коде не видно, но ты где-нибудь писал {$I-} ? А то if IOResult <> 0 then... тебе ничем не поможет.
zetrix вне форума Ответить с цитированием
Старый 23.07.2008, 01:33   #6
Klint
Новичок
Джуниор
 
Регистрация: 23.07.2008
Сообщений: 2
По умолчанию

В программе используется загрузка текста из файла в поле memo. При запуске программы в поле memo отображается всё верно, но при выполнении команды присвоения переменной значения строки в которой содержится знак ‘=’, переменная принимает значение только того, что после этого знака.
Например:
В memo выглядит так: set=password
После присвоения переменной (командой Memo.Lines.ValueFromIndex[]), значение переменной выглядит так: password

В чём проблема?
Klint вне форума Ответить с цитированием
Старый 23.07.2008, 08:13   #7
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от KlErik Посмотреть сообщение
var
f: TextFile;fName: String[80]; // èìÿ ôàéëà
buf: String[80]; // áóôåð äëÿ ÷òåíèÿ èç ôàéëà
procedure TForm1.Button1Click(Sender: TObject);
begin
fName :='c:\data.txt'; AssignFile(f, fName);
Reset(f); // îòêðûòü äëÿ ÷òåíèÿ
if IOResult <> 0 then begin
MessageDlg('Îøèáêà äîñòóïà ê ôàéëó' + fName,mtError,[mbOk],0); exit; end;
// ÷òåíèå èç ôàéëà
while not EOF(f) do begin
readln(f, buf); // ïðî÷èòàòü ñòðîêó èç ôàéëà
Memo1.Lines.Add(buf); // äîáàâèòü ñòðîêó â ïîëå Memo1
end;
CloseFile(f);
end;
А может удобней загружать файл
Код:
memo1.Lines.LoadFromFile('c:\data.txt');
SERG1980 вне форума Ответить с цитированием
Старый 23.07.2008, 08:19   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от Klint Посмотреть сообщение
В программе используется загрузка текста из файла в поле memo. При запуске программы в поле memo отображается всё верно, но при выполнении команды присвоения переменной значения строки в которой содержится знак ‘=’, переменная принимает значение только того, что после этого знака.
Например:
В memo выглядит так: set=password
После присвоения переменной (командой Memo.Lines.ValueFromIndex[]), значение переменной выглядит так: password

В чём проблема?
Попробуйте так:
Код:
var s:string;

 s:=memo1.Lines.Strings[1];
SERG1980 вне форума Ответить с цитированием
Старый 23.07.2008, 18:20   #9
Klint
Новичок
Джуниор
 
Регистрация: 23.07.2008
Сообщений: 2
По умолчанию

2 SERG1980: Большое спасибо теперь работает.
Klint вне форума Ответить с цитированием
Старый 27.07.2008, 15:57   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Небольшое замечание.
Проверку if IOResult <> 0 then лучше делать тогда, когда работа с файлом завершена и файл закрыт.
Могут возникнуть ошибки и во время чтения из файла.
А код, работающий с файлом, заключай в следующую конструкцию:
Код:
{$I-}
...
{$I+}
if IOResult <> 0 then ...
Если хочешь проверить существование файла, то используй функцию FileExists (FileName)
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Memo WOLFak Компоненты Delphi 11 03.06.2008 10:58
Memo -=<[Evklidd]>=- Общие вопросы Delphi 3 01.02.2008 13:44
Memo Kocapb Общие вопросы C/C++ 2 17.01.2008 02:06
Memo MAcK Общие вопросы Delphi 1 02.10.2007 17:14
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo Artem Компоненты Delphi 3 07.09.2007 13:40