Jump to content
View in the app

A better way to browse. Learn more.

FMForums.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Trying to get text for FileExists Function

Featured Replies

I'm trying to write a simple FileExists() function, but I'll be darned if I can't find any documentation (hours of playing with this not fruitful) on how to take the dataVect object passed (the parameter from FileMaker) and pass that (a file name path) to the 'fopen" block of unfinished code below. C++ is not my normal language so the syntax and XCODE errors aren't helping.

Not sure why this is difficult (OK, probably only for me). I'll get a file path in the dataVect and I just want to see if that path exists. (Magic apparently needed.)

Would appreciate any suggestions. This is easy, right?

Thanks,

- m

-------------------------

FMX_PROC(fmx::errcode) FileExists(short funcId, const fmx::ExprEnv& environment, const fmx::DataVect& dataVect, fmx::Data& result)
{
    fmx::errcode      err = 0;
    fmx::TextAutoPtr  tempText;
    fmx::TextAutoPtr  param1;

    param1->SetText(dataVect.AtAsText(0));  // INPUT: path to file.
    
    fmx::TextAutoPtr resultText;  // OUPUT: "true" or "false"
    
   
    if (FILE *file = fopen(<????>, "r")) {
        fclose(file);
        return true;
    } else {
        return false;
    }

didn't you read my slides?

 

const fmx::Text & path = dataVect.AtAsText(0);

 

this gives first parameter.

Than you need to allocate memory, copy bytes from text object to buffer to have a C string.

And you may looking into using unicode path, so no simple fopen()!

  • Author
1 hour ago, MonkeybreadSoftware said:

didn't you read my slides?

 

const fmx::Text & path = dataVect.AtAsText(0);

 

this gives first parameter.

Than you need to allocate memory, copy bytes from text object to buffer to have a C string.

And you may looking into using unicode path, so no simple fopen()!


Maybe my rusty German is even rustier than I thought.

I thought this would be more or less like Java, but yuck, so complicated. Well, I'm just not used to C++, but in Java, this would basically be:

File test = new File("pathtofile");

if (test.exists())....

// SO EASY!

....

Thanks Christian,

- m

Edited by Morkus

  • Author

Christian,

I replied in the FM Community forum, but wanted to thank you again here.

I was able to get the FileExists() function working fine.

Thanks again.

- m

Create an account or sign in to comment

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.