Важная информация
Показано с 1 по 8 из 8

Тема: Помогите адаптировать QuickBASIC код для FreeBASIC

  1. #1 Помогите адаптировать QuickBASIC код для FreeBASIC 
    Новичок
    Регистрация
    16.08.2011
    Сообщений
    17
    Сказал(а) спасибо
    5
    Поблагодарили 0 раз(а) в 0 сообщениях
    Данная программа была мною написана специально для оптимизации карт игры Doom 2D Multiplayer.
    Но так как DOS уже ушёл в историю, а игра написана для Windows, то и хотелось бы скомпилировать сию программу под Windows, чтобы пользователи 64-битных компьютеров тоже могли ею пользоваться.
    Вычитал, что для компиляции QuickBASIC-программ под новые системы можно использовать компилятор FreeBASIC. Но при попытке компиляции ничего не выходит, потому что код не адаптирован, а синтаксиса FreeBASIC я не знаю.
    Может кто-нибудь помочь адаптировать код?
    Код QBASIC:
    [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ] GOTO UNKNOWNERROR          'определяем подпрограмму обработки ошибок
    'подготавливаем компьютер к работе программы
    [Ссылки могут видеть только зарегистрированные пользователи. ] : [Ссылки могут видеть только зарегистрированные пользователи. ]                         'очищаем экран и закрываем все файлы
    COLOR 3
    loadloc = 1
    IF [Ссылки могут видеть только зарегистрированные пользователи. ]([Ссылки могут видеть только зарегистрированные пользователи. ]) = "-INARRCAP" THEN
    [Ссылки могут видеть только зарегистрированные пользователи. ] "ENTER ARRAY SIZE: ", arrcap
    loadloc = loadloc + 1
    ELSE
    arrcap = 10000                      'размер массива для данных карты
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap(1 TO arrcap) [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]   'создаем массив для тайлов
    [Ссылки могут видеть только зарегистрированные пользователи. ] info(1 TO 500) [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]        'создаем массив для описывающей информации
    x = 0                               'переменная для циклов
    x1 = 0                              'переменная для циклов
    x2 = 0                              'переменная для циклов
    seekpos = 0                         'позиция считывания в файле карты
    cycles = 1                          'номер цикла работы
    mapload = 0                         'счетчик загруженных строк
    mapopt = 0                          'счетчик оптимизации
    mapcomp = 0                         'счетчик строк, загруженных в этом цикле
    mapsave = 0                         'счетчик сохраненных в MAP_NEW.DLV строк
    fcomp = 1                           'позиция тайла-образца
    scomp = 5                           'позиция проверяемого тайла
    loading = 0                         'счетчик загрузки программы
    temp$ = ""                          'переменная для временных данных
    mapname$ = ""                       'имя файла карты
    mcomp = 1
    outname$ = ""
    tstart$ = ""
    tend$ = ""
     
    'забиваем массивы пропускаемыми значениями
    [Ссылки могут видеть только зарегистрированные пользователи. ] "LOADING: 0"
    FOR x = 1 TO arrcap
    srcmap(x) = -32767
    loading = loading + 1
    [Ссылки могут видеть только зарегистрированные пользователи. ] loadloc, 9: [Ссылки могут видеть только зарегистрированные пользователи. ] loading
    NEXT x
    FOR x = 1 TO 500
    info(x) = "*|EMPTYARRSLOT|*"
    loading = loading + 1
    [Ссылки могут видеть только зарегистрированные пользователи. ] loadloc, 9: [Ссылки могут видеть только зарегистрированные пользователи. ] loading
    NEXT x
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ] "Doom2DMP Map Optimizer v1.2 by Black Doomer."
    10 [Ссылки могут видеть только зарегистрированные пользователи. ] 2, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "ENTER MAP FILENAME: ", mapname$
    IF mapname$ = "" THEN
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    GOTO 10
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    IF [Ссылки могут видеть только зарегистрированные пользователи. ](mapname$) = "/EXIT" [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ](mapname$) = "/QUIT" THEN
    [Ссылки могут видеть только зарегистрированные пользователи. ]: [Ссылки могут видеть только зарегистрированные пользователи. ] : [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap, info: [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    IF [Ссылки могут видеть только зарегистрированные пользователи. ]([Ссылки могут видеть только зарегистрированные пользователи. ](mapname$, 4)) <> ".DLV" THEN mapname$ = mapname$ + ".DLV"
    [Ссылки могут видеть только зарегистрированные пользователи. ] 3, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "ENTER OUTPUT MAP FILENAME (MAP_NEW.DLV is default): ", outname$
    tstart$ = [Ссылки могут видеть только зарегистрированные пользователи. ]
    IF outname$ = "" THEN outname$ = "MAP_NEW.DLV"
    IF [Ссылки могут видеть только зарегистрированные пользователи. ]([Ссылки могут видеть только зарегистрированные пользователи. ](outname$, 4)) <> ".DLV" THEN outname$ = outname$ + ".DLV"
    [Ссылки могут видеть только зарегистрированные пользователи. ] mapname$ FOR [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ] #1 [Ссылки могут видеть только зарегистрированные пользователи. ] = 2
    [Ссылки могут видеть только зарегистрированные пользователи. ] outname$ FOR [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ] #2 [Ссылки могут видеть только зарегистрированные пользователи. ] = 2
    [Ссылки могут видеть только зарегистрированные пользователи. ] "MAPOPT12.LOG" FOR [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ] #3
    IF [Ссылки могут видеть только зарегистрированные пользователи. ](3) = 1 THEN
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Doom2DMP Map Optimizer log file."
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Creating time: "; [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "=*=*=*=*=*=*=*=*=*="
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    FOR x = 1 TO 7
    [Ссылки могут видеть только зарегистрированные пользователи. ] #1, info(x)
    mapload = mapload + 1
    [Ссылки могут видеть только зарегистрированные пользователи. ] 3, 13: [Ссылки могут видеть только зарегистрированные пользователи. ] mapload
    NEXT x
    FOR x = 8 TO 500
    [Ссылки могут видеть только зарегистрированные пользователи. ] #1, temp$
    IF [Ссылки могут видеть только зарегистрированные пользователи. ]([Ссылки могут видеть только зарегистрированные пользователи. ](temp$, 5)) = "DATA\" THEN
    info(x) = temp$
    mapload = mapload + 1
    [Ссылки могут видеть только зарегистрированные пользователи. ] 3, 13: [Ссылки могут видеть только зарегистрированные пользователи. ] mapload
    ELSE
    seekpos = [Ссылки могут видеть только зарегистрированные пользователи. ](1) - [Ссылки могут видеть только зарегистрированные пользователи. ](temp$) - 2
    [Ссылки могут видеть только зарегистрированные пользователи. ] #1, seekpos
    [Ссылки могут видеть только зарегистрированные пользователи. ] FOR
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    NEXT x
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ] 1, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "Working cycle: 1"
    [Ссылки могут видеть только зарегистрированные пользователи. ] 3, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "Loading map: 0"
    [Ссылки могут видеть только зарегистрированные пользователи. ] 5, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "Optimizing map: 0"
    [Ссылки могут видеть только зарегистрированные пользователи. ] 7, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "Saving map: 0"
    [Ссылки могут видеть только зарегистрированные пользователи. ] 10, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "EXAMPLE TILE:"; [Ссылки могут видеть только зарегистрированные пользователи. ](7); "CHECKING TILE:"
    FOR x = 1 TO 500
    IF info(x) = "*|EMPTYARRSLOT|*" THEN [Ссылки могут видеть только зарегистрированные пользователи. ] FOR
    [Ссылки могут видеть только зарегистрированные пользователи. ] #2, info(x)
    mapsave = mapsave + 1
    [Ссылки могут видеть только зарегистрированные пользователи. ] 7, 12: [Ссылки могут видеть только зарегистрированные пользователи. ] mapsave
    NEXT x
    DO
    [Ссылки могут видеть только зарегистрированные пользователи. ] 1, 15: [Ссылки могут видеть только зарегистрированные пользователи. ] cycles
    FOR x = 1 TO arrcap
    [Ссылки могут видеть только зарегистрированные пользователи. ] #1, srcmap(x)
    mapload = mapload + 1
    [Ссылки могут видеть только зарегистрированные пользователи. ] 3, 13: [Ссылки могут видеть только зарегистрированные пользователи. ] mapload
    mapcomp = mapcomp + 1
    IF [Ссылки могут видеть только зарегистрированные пользователи. ](1) <> 0 THEN [Ссылки могут видеть только зарегистрированные пользователи. ] FOR
    NEXT x
    FOR x1 = 1 TO mapcomp / 4 - 1
        FOR x2 = 1 TO mapcomp / 4 - mcomp
            IF srcmap(fcomp) = -32767 THEN
                IF srcmap(fcomp + 1) = -32767 THEN
                    IF srcmap(fcomp + 2) = -32767 THEN
                        IF srcmap(fcomp + 3) = -32767 THEN
                            [Ссылки могут видеть только зарегистрированные пользователи. ] FOR
                        [Ссылки могут видеть только зарегистрированные пользователи. ] IF
                    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
                [Ссылки могут видеть только зарегистрированные пользователи. ] IF
            [Ссылки могут видеть только зарегистрированные пользователи. ] IF
        [Ссылки могут видеть только зарегистрированные пользователи. ] 17, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "X1:", x1; [Ссылки могут видеть только зарегистрированные пользователи. ](10)          'дебаг-функция
        [Ссылки могут видеть только зарегистрированные пользователи. ] 18, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "X2:", x2; [Ссылки могут видеть только зарегистрированные пользователи. ](10)          'дебаг-функция
        [Ссылки могут видеть только зарегистрированные пользователи. ] 19, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "FCOMP:", fcomp; [Ссылки могут видеть только зарегистрированные пользователи. ](10)    'дебаг-функция
        [Ссылки могут видеть только зарегистрированные пользователи. ] 20, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "SCOMP:", scomp; [Ссылки могут видеть только зарегистрированные пользователи. ](10)    'дебаг-функция
        [Ссылки могут видеть только зарегистрированные пользователи. ] 11, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap(fcomp); [Ссылки могут видеть только зарегистрированные пользователи. ](7)
        [Ссылки могут видеть только зарегистрированные пользователи. ] 11, 21: [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap(scomp); [Ссылки могут видеть только зарегистрированные пользователи. ](7)
        [Ссылки могут видеть только зарегистрированные пользователи. ] 12, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap(fcomp + 1); [Ссылки могут видеть только зарегистрированные пользователи. ](7)
        [Ссылки могут видеть только зарегистрированные пользователи. ] 12, 21: [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap(scomp + 1); [Ссылки могут видеть только зарегистрированные пользователи. ](7)
        [Ссылки могут видеть только зарегистрированные пользователи. ] 13, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap(fcomp + 2); [Ссылки могут видеть только зарегистрированные пользователи. ](7)
        [Ссылки могут видеть только зарегистрированные пользователи. ] 13, 21: [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap(scomp + 2); [Ссылки могут видеть только зарегистрированные пользователи. ](7)
        [Ссылки могут видеть только зарегистрированные пользователи. ] 14, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap(fcomp + 3); [Ссылки могут видеть только зарегистрированные пользователи. ](7)
        [Ссылки могут видеть только зарегистрированные пользователи. ] 14, 21: [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap(scomp + 3); [Ссылки могут видеть только зарегистрированные пользователи. ](7)
            IF srcmap(fcomp) = srcmap(scomp) THEN
                IF srcmap(fcomp + 1) = srcmap(scomp + 1) THEN
                    IF srcmap(fcomp + 2) = srcmap(scomp + 2) THEN
                        IF srcmap(fcomp + 3) = srcmap(scomp + 3) THEN
                        srcmap(scomp) = -32767
                        srcmap(scomp + 1) = -32767
                        srcmap(scomp + 2) = -32767
                        srcmap(scomp + 3) = -32767
                        mapopt = mapopt + 1
                        [Ссылки могут видеть только зарегистрированные пользователи. ] 5, 16: [Ссылки могут видеть только зарегистрированные пользователи. ] mapopt
                        [Ссылки могут видеть только зарегистрированные пользователи. ] IF
                    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
                [Ссылки могут видеть только зарегистрированные пользователи. ] IF
            [Ссылки могут видеть только зарегистрированные пользователи. ] IF
        scomp = scomp + 4
        NEXT x2
    fcomp = fcomp + 4
    scomp = fcomp + 4
    mcomp = mcomp + 1
    NEXT x1
    FOR x = 1 TO arrcap
    IF srcmap(x) <> -32767 THEN
    [Ссылки могут видеть только зарегистрированные пользователи. ] #2, srcmap(x)
    mapsave = mapsave + 1
    [Ссылки могут видеть только зарегистрированные пользователи. ] 7, 12: [Ссылки могут видеть только зарегистрированные пользователи. ] mapsave
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    NEXT x
    IF [Ссылки могут видеть только зарегистрированные пользователи. ](1) <> 0 THEN
    tend$ = [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ] DO
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    cycles = cycles + 1
    mapcomp = 0
    fcomp = 1
    scomp = 5
    mcomp = 1
    FOR x = 1 TO arrcap
    srcmap(x) = -32767
    NEXT x
    LOOP
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Input map filename: "; mapname$
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Output map filename: "; outname$
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Starting time: "; tstart$
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Ending time: "; tend$
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, [Ссылки могут видеть только зарегистрированные пользователи. ](13)
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Working cycles:"; cycles
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Optimizing map (deleted tiles):"; mapopt
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Array size:"; arrcap
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Non-optimized map size:"; [Ссылки могут видеть только зарегистрированные пользователи. ](1); "bytes."
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "Optimized map size:"; [Ссылки могут видеть только зарегистрированные пользователи. ](2); "bytes."
    IF [Ссылки могут видеть только зарегистрированные пользователи. ](1) = [Ссылки могут видеть только зарегистрированные пользователи. ](2) THEN
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, [Ссылки могут видеть только зарегистрированные пользователи. ](13)
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "[!] Output map was deleted, because no deleted tiles."
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, "=*=*=*=*=*=*=*=*=*="
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3, [Ссылки могут видеть только зарегистрированные пользователи. ](13)
    [Ссылки могут видеть только зарегистрированные пользователи. ] #3
    [Ссылки могут видеть только зарегистрированные пользователи. ] 17, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "ALL DONE."; [Ссылки могут видеть только зарегистрированные пользователи. ](15)
    [Ссылки могут видеть только зарегистрированные пользователи. ] 18, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "Non-optimized map size:"; [Ссылки могут видеть только зарегистрированные пользователи. ](1); "bytes."; [Ссылки могут видеть только зарегистрированные пользователи. ](15)
    [Ссылки могут видеть только зарегистрированные пользователи. ] 19, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "Optimized map size:"; [Ссылки могут видеть только зарегистрированные пользователи. ](2); "bytes."; [Ссылки могут видеть только зарегистрированные пользователи. ](15)
    IF [Ссылки могут видеть только зарегистрированные пользователи. ](1) = [Ссылки могут видеть только зарегистрированные пользователи. ](2) THEN
    [Ссылки могут видеть только зарегистрированные пользователи. ] #2
    [Ссылки могут видеть только зарегистрированные пользователи. ] outname$
    [Ссылки могут видеть только зарегистрированные пользователи. ] 20, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] outname$; " was deleted."; [Ссылки могут видеть только зарегистрированные пользователи. ](15)
    [Ссылки могут видеть только зарегистрированные пользователи. ] 21, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "Press any key to quit."; [Ссылки могут видеть только зарегистрированные пользователи. ](15)
    ELSE
    [Ссылки могут видеть только зарегистрированные пользователи. ] 20, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "Press any key to quit."; [Ссылки могут видеть только зарегистрированные пользователи. ](15)
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ]: [Ссылки могут видеть только зарегистрированные пользователи. ]: [Ссылки могут видеть только зарегистрированные пользователи. ] : [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap, info: [Ссылки могут видеть только зарегистрированные пользователи. ]
     
    UNKNOWNERROR:
    [Ссылки могут видеть только зарегистрированные пользователи. ] 22, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "UNKNOWN ERROR;"
    [Ссылки могут видеть только зарегистрированные пользователи. ] 23, 1: [Ссылки могут видеть только зарегистрированные пользователи. ] "press any key to quit."
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ]: [Ссылки могут видеть только зарегистрированные пользователи. ]: [Ссылки могут видеть только зарегистрированные пользователи. ] : [Ссылки могут видеть только зарегистрированные пользователи. ] srcmap, info: [Ссылки могут видеть только зарегистрированные пользователи. ]
    Последний раз редактировалось Black Doomer; 17.08.2011 в 07:08.
    Ответить с цитированием  
     

  2. #2  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    1. Какой версией компилятора FreeBASIC пользуетесь, и где он выкидывает ошибку при компиляции?
    2. Из советов: Попробуте зайти в опции вашего компилятора FreeBASIC. Там обычно была строка для настройки синтаксиса языка (как в FreePascal). Есть FreeBASIC диалект, а есть максимальная совместимость с программами на QB. Если найдете такую - то включите ее, и попробуйте скомпилировать. Также можете поискать опцию для генерации консольного приложения - если такая существует, то возможно вам даже не придется вносить изменения в код, т.к основные изменения для Windows-систем и будут как раз заключаться в том, что придется обрабатывать их оконный интерфейс.
    Также пообъявляйте командами Dim и остальные переменные, вроде arrcap, и прочих, которые у вас не объявлены, ибо FreeBASIC может и не принимать необъявленные переменные, как это делает QB.
    3. Если не получится заставить работать эту программу на FB, можете скачать QB64 ([Ссылки могут видеть только зарегистрированные пользователи. ]). Этот компилятор генерирует очень объемные программы, в отличие от QB, однако имеет практически полную совместимость с QB.
    Последний раз редактировалось Абадябер; 16.08.2011 в 13:03.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  3. #3  
    Новичок
    Регистрация
    16.08.2011
    Сообщений
    17
    Сказал(а) спасибо
    5
    Поблагодарили 0 раз(а) в 0 сообщениях
    Таки получилось скомпилировать программу FreeBASIC'ом. Одна проблема - скомпилированная программа работает медленнее своего досового собрата, запущенного с помощью досбокса и во много-много раз медленнее этого же собрата, запущенного из-под NTVDM.
    Вопрос - почему так?
    Ответить с цитированием  
     

  4. #4  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Очень странно все это. Попробуйте отказаться от конструкции ON ERROR и заменить ее несколькими проверками в наиболее опасных местах. Еще раз проверьте настройки компилятора.
    Каким образом вы замеряли производительность?
    Дружба-магия-радость!
    Ответить с цитированием  
     

  5. #5  
    Новичок
    Регистрация
    16.08.2011
    Сообщений
    17
    Сказал(а) спасибо
    5
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от Абадябер Посмотреть сообщение
    Каким образом вы замеряли производительность?
    Там есть переменная FCOMP и индекс цикла X1. При работе программы их значения отображаются внизу. Так вот: чем быстрее увеличиваются эти числа, тем быстрее просчитывается карта на наличие тайлов-дубликатов. Ну и получается: в досовской программе это число идёт вперёд семимильными шагами, а в виндузской еле-еле ползёт.
    Отказ от конструкции ON ERROR ни к чему ни привёл.
    Просто я ОЧЕНЬ хочу скомпилировать эту программу под винду. Только под ней можно будет нормально оптимизировать большие карты. А так приходится делать оптимизацию в два этапа: с массивом в 10000 элементов и в 7000. Иначе кое-где могут оставаться тайлы-дубликаты.
    Компилировал вот с этими параметрами в комстроке:
    Код :
    fbc.exe -lang qb -s console MAPOPT12.BAS
    Может, надо ему памяти побольше дать? А то он всего 620 Кб довольствуется... Да и как это сделать, не представляю.
    Последний раз редактировалось Black Doomer; 17.08.2011 в 14:58.
    Ответить с цитированием  
     

  6. #6  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Ну да, диалект QB, консольный режим. Даже не знаю, чем еще помочь. Можете закомментировать вывод строки с числами FCOMP по индексу X1 (а также закомментировать вообще почти любой вывод в консоль), после чего сравнить быстродействие по времени. Возможно, динамичный вывод в консоль Windows работает медленно. Иначе остается лишь внимательно читать руководство к компилятору, и список параметров, передаваемых компилятору, может упустили что либо важное.
    Что касается памяти - очень врядли. В Windows управление памятью происходит совсем иначе, нежели в DOS, к тому же, в вашей программе вы не работаете с динамической памятью. Раз компилируется, значит дело, скорее всего, не в этом.
    Не забывайте, что на крайний случай можно воспользоваться и компилятором QB64 - если ничего другого не поможет, но перед этим, если для вас это так важно, попытайтесь узнать что либо на других форумах. Особенно хорошо будет, если вы найдете русско-язычный форум, посвященный FreeBASIC - думаю, вам там ответят наверняка)
    Дружба-магия-радость!
    Ответить с цитированием  
     

  7. #7  
    Новичок
    Регистрация
    16.08.2011
    Сообщений
    17
    Сказал(а) спасибо
    5
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от Абадябер Посмотреть сообщение
    Не забывайте, что на крайний случай можно воспользоваться и компилятором QB64
    Смотрел я уже его. Да... размер программы 697 Кб и необходимость распространять её вместе с SDL-библиотеками (иначе не запустится)... знаете, "впечатляет".
    Ладно, сейчас попробую найти русскоязычный форум и спросить там - даст Бог, помогут.
    Но в любом случае, спасибо за старания.
    Ответить с цитированием  
     

  8. #8  
    Новичок
    Регистрация
    16.08.2011
    Сообщений
    17
    Сказал(а) спасибо
    5
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от Абадябер Посмотреть сообщение
    Можете закомментировать вывод строки с числами FCOMP по индексу X1 (а также закомментировать вообще почти любой вывод в консоль), после чего сравнить быстродействие по времени. Возможно, динамичный вывод в консоль Windows работает медленно.
    Да, дело оказалось именно в этом. Оказалось, стандартный виндусский обработчик консольных приложений cmd.exe выводит текст в консоль медленнее, нежели досовая виртуальная машина NTVDM.
    Спасибо за помощь.
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Запуск FreeBasic в MacOS X
    от Konstantin Shcherba в разделе FreeBasic
    Ответов: 7
    Последнее сообщение: 09.01.2013, 17:51
  2. Описание FreeBasic и вопросы миграции.
    от >Quiet Snow< в разделе FreeBasic
    Ответов: 0
    Последнее сообщение: 05.01.2013, 20:41
  3. Установка FreeBasic в Linux
    от Dispetcher14 в разделе FreeBasic
    Ответов: 2
    Последнее сообщение: 05.01.2013, 14:20
  4. Мышь в QuickBasic
    от pingvin в разделе QBasic
    Ответов: 7
    Последнее сообщение: 13.02.2011, 21:24
  5. FreeBASIC
    от Uzix в разделе Софт
    Ответов: 1
    Последнее сообщение: 08.11.2010, 21:41
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •