Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.04.2018, 23:44
Kirhanter Kirhanter вне форума
Прохожий
 
Регистрация: 05.04.2018
Сообщения: 4
Версия Delphi: Delhi
Репутация: 10
По умолчанию Ошибка I/O error 6

Ошибочка во время
Код:
 if s <> Login then b:=False
        Else b:=true;
Вот весть код:
Код:
procedure Send(Login:string; Info:string; Socket: TCustomWinSocket);
var Friend, sms, s, l:string;
b:boolean;
messages:array of string;
Begin
  l:=login;
  SetLength(messages, 0);
  b:=false;
  Friend:=Copy(Info, 1, pos('@', Info)-1);
  sms:=Copy(Info, pos('@', Info)+1, length(Info));
  Socket.SendText('h' + Friend + '!' + Login + '@' + sms + #4);
  if not DirectoryExists('Users\' + Login + '\sms\' + Friend) then
  MkDir('Users\' + Login + '\sms\' + Friend);
  if not DirectoryExists('Users\' + Friend + '\sms\' + Login) then
  MkDir('Users\' + Friend + '\sms\' + Login);
  AssignFile(f,'Users\' + Friend + '\MessageList.tbb');
  Reset(f);
  while not EOF(f) do
    Begin
    Readln(s);
      if s <> Login then b:=False
        Else b:=true;
    End;
  if b=false then Append(f);
  CloseFile(f);
  AssignFile(f,'Users\' + Login + '\sms\' + Friend + '\s.tbb');
  Append(f);
  Writeln('<' + sms);
  CloseFile(f);
  AssignFile(f,'Users\' + Friend + '\sms\' + Login + '\s.tbb');
  Append(f);
  Writeln('>' + sms);
  CloseFile(f);
End;

Изображения
Тип файла: png Screenshot_1.png (10.9 Кбайт, 2 просмотров)

Последний раз редактировалось Admin, 06.04.2018 в 21:18.
Ответить с цитированием
  #2  
Старый 06.04.2018, 04:49
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. У тебя явно ошибка в алгоритме. В случае, если искомая строка НЕ ПОСЛЕДНЯЯ, по выходу из While у тебя будет во флаге false.
2. Сама I/O error скорее всего связана не с первым приведенным кодом, а с Writeln, бо как оно нормально работает только в консольном приложении. Походу, ты пытаешься записать в файл. Ну и пропустил файловую переменную на месте первого параметра. Кстати, и в цикле при чтерии она тоже пропущена.
3. Далее, пути. Если твоя программа в PRogram Files, то скорее всего оно падает на правах записи, т.к. для этого нужны права администратора.
4. Вообще тот цикл должен выглядеть так:
Код:
b := false;
While Not EOF(f) Do
begin
  Readln(f,s);
  b := Login = s;
  if b then Break;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:10.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025