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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2013, 16:42   #1
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию Как исправить ошибку?

Привет. Пуши программы, типо чата на сокетах. Вот код:
Код:
var
f1: TextFile;
Text: array [1..MAX_PATH] of  string;
i, r: integer;
M: string;
begin
if (NikNameClient<>'') or (LoginClient<>'') then  //если пользователь подключен к собеседнику
begin
ClientSocket1.Socket.Connect(0);
if not ClientSocket1.Socket.Connected then exit; //если соеденение прервано то уходим, он нам не нужен
if FileExists(Path + 'Cashe\' + LoginClient + '\' + DateToStr(Date) + '.html') then
begin
if Memo1.Text='' then exit;
ClientSocket1.Socket.SendText(Memo1.Text);
//читаем файл
AssignFile(f1, Path + 'Cashe\' + LoginClient + '\' + DateToStr(Date) + '.html');
Rewrite(f1);
try
Read(f1,Text);
Application.ProcessMessages;
finally
CloseFile(f1);
end;
For i:=1 To sizeof(Text) Do
begin
M:=Text[i];
if M='<html>' then Continue;
if M='<body>' then Continue;
if M='</body>' then
begin
Text[i]:='[' + TimeToStr(Time) + '] ' + NikName + ':' + Memo1.Text;
Text[i+1]:='</body>';
Text[i+2]:='</html>';
//записываем новые данные
AssignFile(f1, Path + 'Cashe\' + LoginClient + '\' + DateToStr(Date) + '.html');
Rewrite(f1);
for r:=1 To Sizeof(Text) Do
begin
Write(f1,Text[r]);
Application.ProcessMessages;
end;
CloseFile(f1);
Break;
end;
end;
WebBrowser1.Refresh;
Memo1.Text:='';
end
else
begin
if Memo1.Text='' then exit;
ClientSocket1.Socket.SendText(Memo1.Text);
AssignFile(f1,Path + 'Cashe\' + LoginClient + '\' + DateToStr(Date) + '.html');
Rewrite(f1);
Write(f1,'<html>');
Write(f1,'<body>');
Write(f1,'Текущая дата:' + DateToStr(Date));
Write(f1,'[' + TimeToStr(Time) + '] ' + NikNameClient + ':' + Memo1.Text);
CloseFile(f1);
WebBrowser1.Refresh;
Memo1.Text;
end;
end else exit;
Выдает ошибку на чтение файла в массив. Вопрос: Как исправить?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 26.05.2013, 17:00   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А почему не TStringList или string?
И
Цитата:
Text: array [1..MAX_PATH] of string;
Массив у вас длинной всего-то 260 знаков.
Человек_Борща вне форума Ответить с цитированием
Старый 26.05.2013, 17:07   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
sizeof(Text)
Text это наряду с textfile все еще пока зарезервированное имя. не рекомендую его использовать.
Цитата:
Выдает ошибку
Ты Чарли Ксавье? Я лично нет.
Цитата:
Выдает ошибку
Из текстового файла так не читают. Читай в массиве, или используй TStringList. У него есть метод LoadFromFile, который загружает текстовый файл в массив Strings этого класса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.05.2013, 17:47   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Во первых, переменая text- это массив из неизвестного числа строк(отдельных!).
Во вторых, мне нужен ваш StringList.
Во третих, я просил как исправить ошибку:
Illegal type in Read/Readln statement
Или прочитать файл в массив!
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 26.05.2013, 20:27   #5
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Всё исправил. Оказывается дествительно надо было поменять название переменой, но я поменял название и использовал TStringList. Спасибо, что отвечали.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 26.05.2013, 20:30   #6
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

1. НЕ ИСПОЛЬЗУЙ ПЕРЕМЕННУЮ Text, назови ее по другому.
2. STRINGLIST - переменная состоящая из неизвестного количества строк, при том имеет стандартные функции чтения файла (сразу всего и вся), обращение идет так же как и к обычному массиву строк, за исключением одного лишнего слова (stringlist.strings[X]).
3. ЧИТАЕШЬ НЕ ПРАВИЛЬНЫЙ ТИП.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как исправить ошибку Lotles Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 22.02.2012 20:11
как исправить ошибку Katrina* Паскаль, Turbo Pascal, PascalABC.NET 9 21.12.2011 00:17
Как исправить ошибку? True_girl Помощь студентам 0 19.04.2010 22:47
как исправить ошибку? aiktz Паскаль, Turbo Pascal, PascalABC.NET 3 24.09.2009 18:56