Другие языки программирования и технологии

purebasic ошибка

File.s=OpenFileRequester("","","Текстовые файлы (txt)|*.txt",0)
If File<>""
If ReadFile(0, File) ; Открытие файла
Size=Lof(0) ; Определение размера файла в байтах
*mem=AllocateMemory(Size) ; Запрашиваем у ОС число байт, равное размеру файла
If *mem
ReadData(0, *mem, Size) ; Копирование данных из файла в память
CloseFile(0) ; Закрытие файла
Text.s=PeekS(*mem) ; Копируем данные из памяти в строковую переменную
FreeMemory(*mem) ; Освобождаем память
Else
MessageRequester("", "Не удалось получить запрашиваемую память")
End ; Завершение работы программы
EndIf
Else
MessageRequester("", "Не удалось открыть файл")
End ; Завершение работы программы
EndIf
EndIf
; Открываем окно
OpenWindow(1,0,0,400,400,"Работа с памятью", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(1))
EditorGadget(1,2,2,396,396) ; Создаём текстовый редактор
SetGadgetText(1,Text) ; Помещаем текст из строковой переменной в редактор

Repeat ; Главный цикл программы
Event=WaitWindowEvent() ; Получаем идентификатор события в программе
Until Event=#PB_Event_CloseWindow ; Прерываем цикл если нужно закрыть окно

строки

Else
MessageRequester("", "Не удалось открыть файл")
End ; Завершение работы программы

если нелвозможно открыть файл то вывести на экран сообщение
и выйти

можно сделать так чтобы небыло команды на выход (End)
вообщем сделать так чтобы программа не заглючила и могла дальше работать без перезагрузки
>>можно сделать так чтобы небыло команды на выход (End)

Убери ее из кода.
Ion Barabas
Ion Barabas
31 824
Лучший ответ
> ...ошибка
А где ошибка? Как программа написана, так она и работает. Невозможно открыть файл -- значит выход. Никаких ошибок нет.

> вообщем сделать так чтобы программа не заглючила
В чем глюк сейчас? Это не глюк, программа так написана.

> ..
> >>можно сделать так чтобы небыло команды на выход (End)
> Убери ее из кода.
Ну и? Появится пустое окно редактирования, которое просто бесполезно, т. к. любой введенный в него текст невозможно сохранить из самой программы. Это и будет нормальная работа программы без глюков? Короче, двоеточечник даже по своему фетишу нормальных советов дать не может, только копипаста кода из инета, да ссылки на уже готовые решения и реклама самого языка.

> вообщем сделать так чтобы программа ...могла дальше работать без перезагрузки
Сначала определись, что ты подразумеваешь под нормальной работой программы. К примеру, вместо однократной попытки открыть файл, можно организовать цикл и прерывать его только тогда, когда будет введено корректное имя файла и этот файл будет удачно открыт:

Opened = 0
While Not Opened
File.s = OpenFileRequester("", "", "Текстовые файлы (txt)|*.txt", 0)
If File<>""
If ReadFile(0, File) ; Открытие файла
Opened = 1
Size=Lof(0) ; Определение размера файла в байтах
...
...
Else
MessageRequester("", "Не удалось открыть файл")
EndIf
EndIf
Wend
...
...

А может быть "нормальное", по твоему мнению, поведение программы должно быть другим, тогда и код будет другой.
Sergey Chetvertkov
Sergey Chetvertkov
67 065