String beschriben

mburggra
2008-04-16
2008-04-17
  • mburggra - 2008-04-16

    Hallo,

    Ich habe ein ARRAY, bei dem die ersten 18 Felder beschrieben sind und einen STRING(18).

    Wie kann ich die Daten des Array an den String weitergeben ???

    Also zum Beispiel steht im Array

    [0]=H

    [1]=A

    [2]=l

    .

    .

    [17]=...

    dann soll im String eben auch stehen: 'HAL.....'

     

    Related

    Talk.ru: 1
    Talk.ru: 2

  • Tobi - 2008-04-16

    Hallo,

    mal so ganz aus der Hüfte heraus:

    VAR
    temp : POINTER TO BYTE;
    ergebnis: STRING[18];
    cnt: int;
    source: ARRAY OF BYTE[0..17];
    END VAR
    
    temp := ADR(source[0]);
    for i:= 0 to 17 DO
    ergebnis[i] := temp^;
    temp :=ADR(source[i+1]);
    END_FOR
    

    Also: Pointer erstellen, und kopieren, Wert für Wert...

    Ist ungetestet, sollte aber zumindest ähnlich arbeiten.

    Analog zum bekannten Werbespot: Gibts da nicht auch was von OSCAT?

    Gruß

     
  • mburggra - 2008-04-16

    man kan bei einem String aber nicht auf einen index zugreifen. das geht doch nur bei arrays.

    Aber ich habs jetzt anders geschafft.

    Danke trotzdem

     
  • Tobi - 2008-04-16

    Hallo nochmal,

    richtig. Sorry.

    die Concat-Funktion wäre wohl das richtige

    string3 := concat(string1, string2);
    

    wenn als beispiel
    string1 := HAL

    und

    string2 := LO

    dann ist der Inhalt von string3 := HALLO

    temp := ADR(source[0]);
    for i:= 0 to 17 DO
    ergebnis := concat(ergebnis + temp^);
    temp :=ADR(source[i+1]);
    END_FOR 
    

    müsste also klappen. Evtl. musst du 'unten' am String anfangen, wieder ungetestet...

     
  • hugo - 2008-04-17

    ohne pointer wird dies eine sehr langsame geschichte und die performance leidet.

    in der freinen bibliothek auf w www.oscat.de w findest du bausteine für genau dein problem.

    buffer_to_string und string_to_buffer kopieren einen string in ein array of byte und umgekehrt.

     

Log in to post a comment.