![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Ошибочка во время
Код:
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;![]() Последний раз редактировалось Admin, 06.04.2018 в 21:18. |
|
#2
|
|||
|
|||
|
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; |