Skocz do zawartości

Z tablicy char do char*


Modnar23

Rekomendowane odpowiedzi

Pisze bibliotekę w Turbo C++ dla GM, która zawiera dwie funkcje: zapis i odczyt z pliku binarnego. Korzystam z klasy TFileStream, której funkcja Read(<wskaźnik do bufora>,<ilość bitów>) nie pozwala mi używać jako bufora zmiennej typu char* - więc muszę używać zwykłej tablicy typu char.

 

I tu właśnie pojawia się problem, z których do was przychodzę: jeśli chcę przekazać tekst z funkcji do GM, muszę przekonwertować odczytaną tablicę char na char*. Ponieważ GM wymaga aby funkcje biblioteczne zwracały tekst jako wartość typu char*.

 

Znacie jakiś prosty sposób na taką konwersję?

 

Szukam cały czas w google, ale nie znajduję nigdzie satysfakcjonującej odpowiedzi. Może ktoś z was poradził sobie już czymś takim?

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za odpowiedź.

 

Tej metody już próbowałem, ale konwersja nie przebiega prawidłowo, bo GM otrzymuje zamiast żądanego tekstu ciąg przypadkowych znaków.

 

Na szczęście na oficjalnym forum GM znalazłem pewne rozwiązanie i podam je dla ogólnej wiadomości:

jeśli chcemy zwrócić do GM tablicę znaków, to musi być one typu: static char. Niestety nie da się tak zadeklarować argumentów funkcji bo kompilator wywali błąd.

 

Przykład konkatenacji tekstów z oficjalnego forum:

 

export char* add_text (char* str1,char* str2)
{
    char* text = new char[1024];
    sprintf(text,"%s%s",str1,str2);
    return text;
}
static char nazwa_tablicy[rozmiar]

 

przy czym rozmiar: 0 > rozmiar <= 1024 - gdyż większe wartości mogą stworzyć problemy z pamięcią typu wyciek albo przepełnienie stosu itp. lub po prostu GM otrzyma dane nie takie jak chcemy.

 

Temat można zamknąć. Wielkie dzięki za pomoc :angry: .

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...