Andrew
Andrew

Reputation: 1

C++ Variable Conversion

I need to pass one of my parameters to a write() function. It is asking for a type of 'const void*' I am a PHP guy and don't know C++ very well.

Here is my parameter:

const fmx::Text& distance = dataVect.AtAsText(3);

I don't know of any other way to pull in that field. I would love to just declare it const void* but I don't know how.

I guess just converting it would be easier than trying to pull it in the correct way??

The error message: cannot convert const fmx::Text to const void* for argument 2

write(fd, distance, 4);

I know this worked so can I just convert?

const void* s = "5000";

This is for a plugin in FileMaker so I don't really get c++ here.

Is there more anyone would need to help me solve this??

Thanks so much!

Upvotes: 0

Views: 617

Answers (3)

Snazzer
Snazzer

Reputation: 7854

I'm assuming you actually want the text string.

I think you need to check the api for fmx::Text to get the string you want. Here is something I found to get the string out.

Looks like the type stores the data as UTF16, so you have to run a bit of code to get a string out, then pass it to your write function:

//a function to convert to a normal string
std::string getString(fmx::Text& Text)
{
   char buffer[512] = {0}; //NOTE YOU HAVE A STRING SIZE LIMIT

   // convert original text to ASCII text 
   outText.GetBytes( buffer, sizeof(buffer)-1, 0, Text.GetSize(), fmx::Text::kEncoding_Native );    

   return buffer;
}

Then call the function

std::string myString = getString(distance);
write(fd, myString.c_str(), myString.size());

Note I'm assuming a lot here...that you want a string in the current encoding, and not the raw UTF16 data from 'distance'. AND that GetBytes will not mangle the null characters in buffer....

You'll also need to include <string> in your c++ file.

Upvotes: 0

Mark Ransom
Mark Ransom

Reputation: 308528

If fmx::Text was a pointer type, the compiler would automatically convert a reference to it into a void*. You need to use the address-of operator to give the function a pointer to work with:

write(fd, &distance, 4);

Upvotes: 2

stefaanv
stefaanv

Reputation: 14392

I don't really know filemaker, but this link shows that fmx::Text has a GetBytes function. You can then pass the pointer to the buffer filled with this function.

Upvotes: 1

Related Questions