BBStrings in C++ umwandeln OHNE Bmax zu benutzten?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

klin

Betreff: BBStrings in C++ umwandeln OHNE Bmax zu benutzten?

BeitragSo, Aug 23, 2009 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,
fürs erste:
ja ich weiß nicht wohin damit jedoch hat es halb Bmax halb C++ zu tun. Falls dies nicht der richtige Topic ist, dann tuts mir leid.

und zwar: Ich bin grade ein wenig mit detouren am rumspielen. Und als ist DrawText detourt hatte, wollte ich den Text abfragen bzw. ändern. Jedoch kann ich nicht einfach DrawText_N("solala"...) machen, sondern muss den CString (C String) in einen BBString umwandeln.
Ich habe nun alle brl.system headern importet und auf glück gehofft. Jedoch importet er nicht die *.c dateien (Funktionen sind dort um z.B. den BBString in einen CString umzuwandeln) nicht. Das eigenartige dabei ist, sobald ich diese *.c dateien importe tauchen LINK fehlern auf und funktionen werden weiterhin nicht erkannt. Es sind so viele unterschiedliche Fehlern, das man es kaum glauben kann!

Zu meiner Frage:

Gibt es eine einfache möglichkeit um einen verdammten BBString in einen CString und andersrum umzuwandeln?

Wenn ihr jedenfalls schon solche fertig dateien habt oder ich diese .c dateien i-wie anders includen muss (benutzte NUR #include) dann nur zu mit den Antworten Very Happy

THX
MFG
Klin

P.S. sitzte hier schon seit knapp 6 Stunden um nur CString in BBString umzuwandeln >.<

kog

BeitragMo, Aug 24, 2009 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Solltest mal einbisschen anfangen BMax zu erforschen, ein frühes Zusammenbasteln von ner Funktion:
Code: [AUSKLAPPEN]
char *ReadBMax(BBString *s)
{
   char *buf;
   buf=new char[s->length+1];
   for(int i=0;i<s->length;i++)
   {
      buf[i]=(char)s->buf[i];
   }
   buf[s->length]=0;
   return buf;
}

BBString *CreateBMax(char* val)
{
   int sz=strlen(val);
   BBGCMem *q=(BBGCMem*)malloc( sizeof(BBString)+sz*sizeof(BBChar));
   q->pool=NULL;
   q->refs=0x40000000;

   BBString *s=(BBString*)q;
   s->length=sz;
   s->refs=0x40000000;
   for(int i=0;i<sz;i++)
   {
      s->buf[i]=(unsigned char)val[i];
   }
   return s;
}


Vielleicht kannst du damit was anfangen

*edit*
Was man erwähnen sollte, es ist nicht ganz GC zufriedenstellend ...
Noch eine Funktion:
Code: [AUSKLAPPEN]
void DrawText(char*str,float x,float y)
{
   BBString *s=CreateBMax(str);
   bbDrawText(s,x,y);
   s->refs=0x80000000;
   delete[] s->buf;
   free(s->buf);
   free(s);
   return;
}



p.S.: is nurn rumgebastle... auf gutes gelingen

BtbN

BeitragDi, Aug 25, 2009 9:33
Antworten mit Zitat
Benutzer-Profile anzeigen
In BMax:
Code: [AUSKLAPPEN]
Global str:Byte Ptr = "abc".toCString()
Global bla:String = String.FromCString(str)


In C:
Code: [AUSKLAPPEN]
#include <brl.mod/blitz.mod/blitz.h>
#include <stdio.h>

BBString* bla(BBString *blub)
{
    char* str = bbStringToCString(blub);
    printf("%s\n", str);
    BBString* str2 = bbStringFromCString("Hallo");
    return str2;
}

klin

BeitragDo, Aug 27, 2009 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
BtbN hat Folgendes geschrieben:
...

In C:
Code: [AUSKLAPPEN]
#include <brl.mod/blitz.mod/blitz.h>
#include <stdio.h>

BBString* bla(BBString *blub)
{
    char* str = bbStringToCString(blub);
    printf("%s\n", str);
    BBString* str2 = bbStringFromCString("Hallo");
    return str2;
}


Wenn ich ja das mache kommen ja komischerweise diese LNK fehlern:

Code: [AUSKLAPPEN]
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_bbStringFromCString" in Funktion ""struct BBString * __cdecl bla(struct BBString *)" (?bla@@YAPAUBBString@@PAU1@@Z)".

main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_bbStringToCString" in Funktion ""struct BBString * __cdecl bla(struct BBString *)" (?bla@@YAPAUBBString@@PAU1@@Z)".


P.S. kog's hat funktioniert. Wenn es jedoch so funktionieren würde (BtbN sein code), wäre es besser.

BtbN

BeitragDo, Aug 27, 2009 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sieht eher nach einem VC-Fehler aus, damit kannst du das eh vergessen. Du must das ganze schon über Bmax kompilieren lassen, damit er den selben compiler nimmt und die richtigen libs einlinkt.
Lern erstmal C und C++, bevor du mit sowas anfängst.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group