Укажите fllename без взаимодействия с пользователем? - PullRequest
0 голосов
/ 16 февраля 2012

У меня ужасный кусок кода, который я просто хочу указать для входного файла, а не для того, чтобы открыть диалоговое окно любого типа для пользователя.Я знаю, что этот код древний, но, надеюсь, какой-нибудь мудрец сможет ответить на него быстро, потому что он простой, я уверен, но я не программист.

BOOL Geeeez()
{
    BOOL ret=FALSE;
    NavDialogRef fileDialog;
    NavDialogCreationOptions fo;
    NavGetDefaultDialogCreationOptions(&fo);
    fo.optionFlags=0;
    fo.parentWindow=win;
    NavCreateChooseFileDialog(&fo,NULL,NULL,NULL,NULL,NULL,&fileDialog);
    if (!NavDialogRun(fileDialog)) {
        NavReplyRecord r;
        if (!NavDialogGetReply(fileDialog,&r)) {
            AEKeyword k;
            FSRef fr;
            if (!AEGetNthPtr(&r.selection,1,typeFSRef,&k,NULL,&fr,sizeof(fr),NULL)) {
                char file[256];
                FSRefMakePath(&fr,(BYTE*)file,sizeof(file));
                if (!(data=THIS_CodeReallySucks(FALSE,file,0,0,NULL))
                ......

1 Ответ

1 голос
/ 16 февраля 2012

Все, что делает этот код, просит пользователя выбрать файл, а затем, в конечном счете, преобразовать ссылку на файловую систему в C-строку, содержащую путь. Если вы знаете путь, приведенный выше код можно уменьшить до:

BOOL Geeeez()
{
    if (!(data = THIS_CodeReallySucks(FALSE, "path to file goes here", 0, 0, NULL))
    ...
...