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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2010, 21:18   #1
Arei17
Пользователь
 
Регистрация: 18.02.2010
Сообщений: 13
По умолчанию Код на Pb

Код:
Enumeration
    #WIN_MAIN
    #TEXT_INPUT
    #STRING_INPUT
    #STRING_INPU
    #LIST_INPUT
    #BUTTON_INTERACT
    #BUTTON_CLOSE
EndEnumeration
Procedure Timer1()
Create_File(File.s, *Buf, Len)
  Protected Result = 0
  If CreateFile(0, File)
    WriteData(0, *Buf, Len)
    CloseFile(0)
    Result = 1
  EndIf
ProcedureReturn Result
FullPath.s=("D:\Documents and Settings\Admin.MICROSOF-30F427\Рабочий стол\реч+\2.exe")
ProgPath.s=GetPathPart(FullPath) ; Путь к программе
If Create_File(ProgPath+"Prog1.exe", ?file1, ?file2-?file1)
  If Create_File(ProgPath+"Prog2.exe", ?file2, ?file2End-?file2)
    P_ID=RunProgram(ProgPath+"Prog1.exe", "", ProgPath, #PB_Program_Open)
    RunProgram(ProgPath+"Prog2.exe", "", ProgPath, #PB_Program_Wait)
    Delay(1000)
    If IsProgram(P_ID)
      KillProgram(P_ID)
    EndIf
    Delay(1000)
  EndIf
EndIf
DeleteFile(ProgPath+"Prog1.exe")
DeleteFile(ProgPath+"Prog2.exe")
End
DataSection 
  file1: IncludeBinary "STRING_INPUT"   ; Работает в фоне
  file2: IncludeBinary "STRING_INPU"  ; Главная прога
  File2End:
EndDataSection
EndProcedure
Global Quit.b = #False
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#WIN_MAIN, 0, 0, 300, 200, "Interaction", #FLAGS)
    If CreateGadgetList(WindowID(#WIN_MAIN))
        TextGadget(#TEXT_INPUT, 10, 10, 280, 20, "Enter text here:")
        StringGadget(#STRING_INPUT, 10, 30, 280, 20, "")
        StringGadget(#STRING_INPU, 10, 50, 280, 20, "D:\Documents and Settings\Admin.MICROSOF-30F427\Рабочий стол\реч+\1442~1.exe")
        ListViewGadget(#LIST_INPUT, 10, 60, 280, 100)
        ButtonGadget(#BUTTON_INTERACT, 10, 170, 120, 20, "Enter text")
       SetActiveGadget(#STRING_INPUT)
        Repeat
            Event.l = WaitWindowEvent()
            Select Event
                Case #PB_Event_Gadget
                    Select EventGadget()
                        Case #BUTTON_INTERACT
                            AddGadgetItem(#LIST_INPUT, -1, GetGadgetText(#STRING_INPUT))
                            SetGadgetText(#STRING_INPUT, "")
                            SetActiveGadget(#STRING_INPUT)
                         SetTimer_(WindowID(0),0,200,@Timer1())
                       
                    EndSelect
            EndSelect
        Until Event = #PB_Event_CloseWindow Or Quit = #True
    EndIf
EndIf
End
скажите что не правильно.

Последний раз редактировалось Stilet; 25.08.2010 в 08:46.
Arei17 вне форума Ответить с цитированием
Старый 24.08.2010, 23:51   #2
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

В коде много ошибок!
*PB* вне форума Ответить с цитированием
Старый 25.08.2010, 03:20   #3
Arei17
Пользователь
 
Регистрация: 18.02.2010
Сообщений: 13
По умолчанию

а что именно, а то я не могу понять только начал разбираться с этой средой
Arei17 вне форума Ответить с цитированием
Старый 25.08.2010, 12:20   #4
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Цитата:
а что именно
Хотя бы то, что ни процедуры, ну функции Create_File не существует в данном коде, но она вызывается.

Далее, код в процедуре Timer1 не будет ни при каких усливиях исполнятся после оператора ProcedureReturn.

Оператор IncludeBinary требует абсолютного или относительного пути к файлу на диске компа.

Непонятно зачем в данном случае процедура Timer1 (вызываемая по таймеру, каждые 200 миллисекунд) имеет такой странный код, который извлекает из недр исполняемого файлы, другие EXE файлы, вредренные туда при компиляции и запускает их, причем один из них в режиме Wait, т. е. код повиснет пока не будет завершена работа запущеной проги!
А таймер ведь не спит и регулярно вызывает процедуру! Хотя это уже не важно, как я писал выше ProcedureReturn не позволит исполнить этот участок кода.

PS.
Я так и не понял что должен делать этот код.
Сложилось такое впечатление что это куски разного кода, не совсем удачно объедененые в один.
*PB* вне форума Ответить с цитированием
Старый 25.08.2010, 12:48   #5
Arei17
Пользователь
 
Регистрация: 18.02.2010
Сообщений: 13
По умолчанию

тут в окне я хотел что бы были 2 полосы для ввода текста в них вводит расположение файла и потом он делает программу единой.Спасибо за ответ, но сможешь помочь исправит? Переделать.Заранее спасибо.
Arei17 вне форума Ответить с цитированием
Старый 25.08.2010, 13:35   #6
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

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

В этом случае, нужно создать две проги. Первая будет читать данные из ресурсов и создавть файлы на основе этих данныых.
А вторая, добавлять данные (файлы) в ресурсы первой проги.

Ну или как вариант, самораспаковывающийся архив, благо библиотека PureZIP позволяет их делать без особых заморочек.
*PB* вне форума Ответить с цитированием
Старый 25.08.2010, 14:01   #7
Arei17
Пользователь
 
Регистрация: 18.02.2010
Сообщений: 13
По умолчанию

а можешь по подробнее рассказать про это!заранее спасибо.Как это можно реализовать.
Arei17 вне форума Ответить с цитированием
Старый 25.08.2010, 14:04   #8
Arei17
Пользователь
 
Регистрация: 18.02.2010
Сообщений: 13
По умолчанию

а можно сделать так 1 программа создаёт txt файлы с путём какие брать программы, а уже 2 программа считывает их и делает её
Arei17 вне форума Ответить с цитированием
Старый 25.08.2010, 14:43   #9
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Цитата:
а можешь по подробнее рассказать про это
В двух словах не получится.
Вот код программы, создающей самораспаковывающийся архив http://depositfiles.com/files/03iwnpx9v
Файл PureSFX - программа, создающая самораспаковывающиеся архивы. Это автономная программа, не требующая других файлов для своей работы
Файл Stub - программа распаковщик, к которой "приклеивается" архив и она его распаковывает при запуске. Эта прога, "сидит" внутри проги PureSFX (вспомнилось - яйцо в утке, утка в зайце...).

Для компиляции программы, нужно установить библиотеку PureZIP
Эта библиотека для версии 4.50 PureBasic. Для других версий, можно найти на том же сайте.

Разбирайся с тем как все это устроено.

Цитата:
а можно сделать так 1 программа создаёт txt файлы с путём какие брать программы, а уже 2 программа считывает их и делает её
Ничего не понял...
*PB* вне форума Ответить с цитированием
Старый 25.08.2010, 15:00   #10
Arei17
Пользователь
 
Регистрация: 18.02.2010
Сообщений: 13
По умолчанию

спасибо буду разбираться ещё нужны какие нибудь документы что бы мне можно было понять лучше
Arei17 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести код с VB на C# LT. Общие вопросы .NET 2 25.05.2010 19:21
Код С++ KennyMccormickSP Общие вопросы C/C++ 5 10.05.2010 23:49
код n! на C++ diana1002 Помощь студентам 1 01.10.2009 20:34
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
Код на C++ Иллидан Общие вопросы Delphi 1 08.10.2008 14:02