Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeichenkette in Variablen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.08.2002, 14:50 Uhr
~Rolli
Gast


Hi,
ich bin ziemlich blutiger C anfänger und muss aber eine Komma separierte Zeichenkette in Variablen umwandeln. Kann mir da jemand Helfen?
Die Zeichenkette sieht etwa so aus:

5;Chef Anton's Gumbo Mix;2;2;36 boxes;21,35;0;0;0;TRUE

Die einezelnen Felder müssen anschliessen noch im Format gewandelt werden, also Zeichen bleiben Zeichen, Zahlen nach Integer oder Float usw.
Die Länge der Zeichenkette ist variabel, die anzahl der Felder auch. Das macht die Sache nicht leichter.

Also, thanks for your aid

der Rolli
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.08.2002, 18:36 Uhr
virtual
Sexiest Bit alive
(Operator)


Ein weing eigener Code wäre eine gute Diskussionsgrundlage.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.08.2002, 13:09 Uhr
~Rolli
Gast


Hi virtual,
hier ist mein Code. Ich bin mittlerweile so weit, dass ich max. 20 spalten
auslesen kann und die dann als String in variabelen umkopiere. Wundert euch bitte nicht über die komische Syntax, ich programmiere hier ein Script in WinCC, einer Visualisierung aus dem Hause Siemens. Man kann hier wenn man etwas spezielles braucht ein Skript in C schreiben. Daher meine rudimentären Kenntnisse. Ich bin eigentlich automatisierer und nicht programmierer.

Also, was fehlt ist ist noch die Variabilität. Müsste mit einer prüfung wie oft dass Komma in dem Ursprünglichen String vorhanden ist getan sein. Die Umwandlung bekomme ich schon hin


C++:
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
#define Tag_Spalte "Spalte"
#define Tag_Feld0 "Feld_0"
#define Tag_Feld1 "Feld_1"
#define Tag_Feld2 "Feld_2"
#define Tag_Feld3 "Feld_3"
#define Tag_Feld4 "Feld_4"
#define Tag_Feld5 "Feld_5"
#define Tag_Feld6 "Feld_6"
#define Tag_Feld7 "Feld_7"
#define Tag_Feld8 "Feld_8"
#define Tag_Feld9 "Feld_9"
#define Tag_Feld10 "Feld_10"
#define Tag_Feld11 "Feld_11"
#define Tag_Feld12 "Feld_12"
#define Tag_Feld13 "Feld_13"
#define Tag_Feld14 "Feld_14"
#define Tag_Feld15 "Feld_15"
#define Tag_Feld16 "Feld_16"
#define Tag_Feld17 "Feld_17"
#define Tag_Feld18 "Feld_18"
#define Tag_Feld19 "Feld_19"

#define GetObjectA GetObject
long ret; //, bEnabled ;
__object *pdl, *pic, *ocx;
int f, i, j;

// Variablen Definieren für SQL-Skriptausführung
char werte[512];        // Array für Zeichenkette auslesen
char felder[20][128];    // Feld von 0-19 (=20 Stück) für Umwandlung in variablen vorsehen

// Variablen initialisieren
f=0;        // Zählschleife für Felder
i=0;        // Zählschleife für Werte
j=0;        // Hilfszählschlife

// WinCC-Runtime-Object öffnen
pdl = __object_create("PDLRuntime") ;
if ( pdl != NULL )
{
    pic = pdl -> GetPicture (  lpszPictureName) ;
    if ( pic != NULL )
    {    
        // die folgende Zeile ändern **********************************************************
        ocx = pic -> GetObject("DBXGrid1")  ;  // hier den Namen des Controls eintragen                
        if ( ocx != NULL )    
        {
            // die folgende Zeile ändern ************************************
            memset(werte, 0, 512);
            //werte == ocx ->GetSelectedData();
            strcpy(werte, ocx ->GetSelectedData());
            printf("String:  %s\n\n", werte);
            SetTagChar(Tag_Spalte,werte);    //Rückgabe-Typ :BOOL
            __object_delete(ocx) ;  // Handle auf OCX löschen
        }
        __object_delete(pic) ; // Handle auf Bild löschen
    }
    __object_delete(pdl) ;      // Handle auf WinCC-Runtime-Object löschen      
}
//**********************************
// Werte in Hilfsvariabelelen umkopieren
//**********************************

//**********************************
// Felder von Variablelen vorbelegen
//**********************************
for (i=0; i<20; i=i+1)
    {
    memset(felder[i], 0, 127);
    }
i=0;
j=0;
f=0;

while (werte[i] != '\0')
    {
        if (werte[i] != ';')
            {
            felder[f][j] = werte[i];
            j++;
            }
        else
            {
            j=0;
            f++;  
            }
        i++;                    // Buchstabenzähler erhöhen
    };

//**********************************
// Felder in Variablelen umkopieren
//**********************************
SetTagChar(Tag_Feld0,felder[0]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld1,felder[1]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld2,felder[2]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld3,felder[3]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld4,felder[4]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld5,felder[5]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld6,felder[6]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld7,felder[7]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld8,felder[8]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld9,felder[9]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld10,felder[10]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld11,felder[11]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld12,felder[12]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld13,felder[13]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld14,felder[14]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld15,felder[15]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld16,felder[16]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld17,felder[17]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld18,felder[18]);    //Rückgabe-Typ :BOOL
SetTagChar(Tag_Feld19,felder[19]);    //Rückgabe-Typ :BOOL


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.08.2005, 09:17 Uhr
~Marinka
Gast


mmmm

Ich habe mich natürlich mit der Antwort schon verspätet, aber ich habe erst jetzt dieses Thema gefunden.
Das ist viel Arbeit diese String-Zeile zum passenden Format zu wandeln. Es gibt standarte Funktionen in C "isalpha", "isdigit"... Aber damit müssen Sie jedes Zeichen prüfen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: