![]() |
|
|
Регистрация | << Правила форума >> | 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; |