Oznámení

Sbalit
Aktuálně žádná oznámení.

AmigaE

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

  • ExiE
    odpověděl
    O: AmigaE

    Autorem citovaného textu je Lisiak4 Přejít na původní příspěvek
    Jen jsem chtěl říci, že se dá pracovat i s řetězcem. Nemusíš tedy po "splitu" tedy rozdělení nutně chtít, aby to co se rozdělilo byla proměnná.

    Python:
    Code:
    adresy = "mac1","mac2","mac3" = v proměnné adresy máš 3 řetězce
    if adresy[0] == "mac3": promennaMacAdresy = indexuješ a porovnáváš text s textem a až po splnění podmínky již pracuješ
                                          s proměnnou. To v Pythonu lze, nevím, jak C.
                                          Nicméně tenhle princip lze použít i v assembleru například.
    Napsal jsem pouze základní princip toho, že lze pracovat i s textem a tím, že znáš ty mac adresy, až po splnění podmínky porovnání mac adresy ve tvaru textu/stringu můžeš pracovat přímo s mac adresou jako s proměnou. Jak jsem psal, je to pouze primitivní způsob řešení. Kód je pouze názorný, není tedy funkční.
    Priznam se ze jsem to teda moc nepochopil...

    Vložit komentář:


  • Lisiak
    odpověděl
    O: AmigaE

    Jen jsem chtěl říci, že se dá pracovat i s řetězcem. Nemusíš tedy po "splitu" tedy rozdělení nutně chtít, aby to co se rozdělilo byla proměnná.

    Python:
    Code:
    adresy = "mac1","mac2","mac3" = v proměnné adresy máš 3 řetězce
    if adresy[0] == "mac3": promennaMacAdresy = indexuješ a porovnáváš text s textem a až po splnění podmínky již pracuješ
                                          s proměnnou. To v Pythonu lze, nevím, jak C.
                                          Nicméně tenhle princip lze použít i v assembleru například.
    Napsal jsem pouze základní princip toho, že lze pracovat i s textem a tím, že znáš ty mac adresy, až po splnění podmínky porovnání mac adresy ve tvaru textu/stringu můžeš pracovat přímo s mac adresou jako s proměnou. Jak jsem psal, je to pouze primitivní způsob řešení. Kód je pouze názorný, není tedy funkční.
    Naposledy upravil Lisiak; 28.12.2017, 06:54:18.

    Vložit komentář:


  • ghh
    odpověděl
    O: AmigaE

    Priznam se ze jsem to teda moc nepochopil...

    Vložit komentář:


  • Lisiak
    odpověděl
    O: AmigaE

    K těmhle postupům v rámci vyššího jazyku jsem se nedostal. Nemůžeš sice řetězec použit přímo jako název proměnné, ale můžeš ho do Tebou stanovené proměnné dát. Pak již pouze porovnáš proměnnou ve které je řetězec s tebou daným řetězcem a při shodě již použiješ konkrétní předem známou proměnnou (MAC adresu). Je to samozřejmě ten nejprimitivnější způsob řešení .

    Vložit komentář:


  • ExiE
    odpověděl
    O: AmigaE

    Autorem citovaného textu je ghh Přejít na původní příspěvek
    Pred tim jsem znal jenom Arexx a jeho funkci parse, tak jsem myslel ze je to bezna vec. Ted jsem nasel ten priklad co dela neco podobnyho, ale nevim jestli "se to tak dela", nebo existuje neco jednodussiho
    Pocty slov i oddelovace jsou predem znamy (MAC adresy v MUI listu) a nebyl by problem je zmenit. Chci tedy vzit polozku v listu, ktera obsahuje text se jmenem a mac adresou (text je vcelku, slova oddelena dvojteckou). Tenhle text chci rozkouskovat na jednotlivy promenny abych je moh pouzit jinde (vyplnit do poli v editacnim okne).
    DJM: Tvuj priklad je jasny a mam rad hodne komentaru
    hmm pokud je ten string vzdy naprosto stejny, tak by sel rozparserovat jednoduseji i pomoci x regcomp()

    Vložit komentář:


  • ghh
    odpověděl
    O: AmigaE

    Pred tim jsem znal jenom Arexx a jeho funkci parse, tak jsem myslel ze je to bezna vec. Ted jsem nasel ten priklad co dela neco podobnyho, ale nevim jestli "se to tak dela", nebo existuje neco jednodussiho
    Pocty slov i oddelovace jsou predem znamy (MAC adresy v MUI listu) a nebyl by problem je zmenit. Chci tedy vzit polozku v listu, ktera obsahuje text se jmenem a mac adresou (text je vcelku, slova oddelena dvojteckou). Tenhle text chci rozkouskovat na jednotlivy promenny abych je moh pouzit jinde (vyplnit do poli v editacnim okne).
    DJM: Tvuj priklad je jasny a mam rad hodne komentaru
    Naposledy upravil ghh; 27.12.2017, 03:36:13. Důvod: vice

    Vložit komentář:


  • DJM
    odpověděl
    O: AmigaE

    Takto nejako by som to robil ja. Jednoduche a pre dany pripad funkcne...

    Code:
    #include <stdio.h>
    
             int p,c;
             char *input="Standa:Pepik:Ruda:Milan";
             char *output[4]; [COLOR=#008000]// maximalne 4 slova,pre viac slov staci zmenit 4 za pozadovany pocet[/COLOR]
    
    void main()
    {        
             [COLOR=#008000]//init na zaciatku a zapise sa rovno adresa prveho slova[/COLOR]
             p=0; c=0;
             output[c++]=&input[p];
    
             [COLOR=#008000]//Pokial neni koniec vstupneho retazca (0), kontroluje sa ci nebola ":".
             //Ak bola, prepise sa na 0 (ukoncenie noveho retazca) a do pola output
             //sa zapise adresa zaciatku slova[/COLOR]
             while(input[p]!=0) {
             if(input[p-1]==':') { input[p-1]=0; output[c++]=&input[p]; }
             p++;
             }
    
             [COLOR=#008000]//Vysledne adresy kazdeho slova sa nachadzaju v poli output[].
             //Pre kontrolu si ich vypiseme.[/COLOR]
             for(p=0;p<4;p++) {
             printf("%s\n",output[p]);
             }
    }

    Vložit komentář:


  • DJM
    odpověděl
    O: AmigaE

    Ja by som to robil trochu inak. Kontroloval by som znak po znaku, az kym by som nenarazil na ":" a zaroven si to zapisoval do nejakeho pola stringov. Ale ako pise aj Exie, neviem co s tym presne chces, kolko by bolo maximalne slov (ci len 4, alebo viac), atd..

    Vložit komentář:


  • ExiE
    odpověděl
    O: AmigaE

    Vazne je tohle to co potrebujes?

    Ja jsem v C dlouho nic neprogramoval, ale pokud to chapu dobre tak rozdelit string pomoci printf znamena, ze ho rovnou vypisujes na standardni vystup, coz je pro dalsi zpracovani naprd. Pokud to chces jen vypsat, tak mas hotovo, ale pokud to budes nejak dal zpracovavat, tak tohle moc nepomuze...

    Vložit komentář:


  • ghh
    odpověděl
    O: AmigaE

    Aha me bylo divny ze jsem nikde nenasel nic o SplitString Takze takhle:
    Code:
    #include<stdio.h>
    
    main()
    {
        char* input ="Standa:Pepik:Ruda:Milan";
        char *output, *temp;
        char * field;
        char sep = ':';
    
        field = input;
        for(temp = field; *temp; ++temp){
           if (*temp == sep){
              printf("%.*s\n", temp-field, field);
              field = temp+1;
           }
        }
        printf("%.*s\n", temp-field, field);
    }
    Je tohle spravnej smer kterym se mam ubirat?

    Vložit komentář:


  • DJM
    odpověděl
    O: AmigaE

    Ta funkcia SplitString() je tam zbytocne, ked sa v nej nic nerobi, len as vracia str...

    Vložit komentář:


  • ghh
    odpověděl
    O: AmigaE

    Nasel jsem tohle a funguje mi to, ale je to v C. Tohle je neco co jsi mel na mysli ?
    Code:
    #include<stdio.h>
    
    char* SplitString(char* str, char sep)
    {
        return str;
    }
    
    main()
    {
        char* input ="Standa:Pepik:Ruda:Milan";
        char *output, *temp;
        char * field;
        char sep = ':';
        output = SplitString(input, sep);
        field = output;
        for(temp = field; *temp; ++temp){
           if (*temp == sep){
              printf("%.*s\n", temp-field, field);
              field = temp+1;
           }
        }
        printf("%.*s\n", temp-field, field);
    }

    Vložit komentář:


  • Doda
    odpověděl
    O: AmigaE

    V C to jde udelat pomoci printf a odpovidajiciho vyrazu, ktery sice neni regularni, ale podoba se tomu.

    Vložit komentář:


  • ExiE
    odpověděl
    O: AmigaE

    Autorem citovaného textu je ghh Přejít na původní příspěvek
    Nemůžu najít jak se dělá v E něco jako je příkaz parse v arexxu. Příklad:
    Neví někdo jak se to dělá v E nebo i v jinym jazyce, E se docela podobá céčku.
    Ja se obavam, ze jak C tak E jsou trosku "nizsi" programovaci jazyky a zadne takto jednoduche funkce nenabizeji (na rozdil treba od PHP kde je explode, nebo str.split v Pythonu).

    V Ccku by jsi mohl pouzit strtok() pripadne pokud by jsi mel k dispozici strsep().

    Ale muzu se samozrejme mylit...

    Vložit komentář:


  • ghh
    založil téma AmigaE

    AmigaE

    Nemůžu najít jak se dělá v E něco jako je příkaz parse v arexxu. Příklad:
    Code:
    /* parse ala arexx */
    mujtext = "Standa:Pepik:Ruda:Milan"
    parse var mujtext jmeno1':'jmeno2':'jmeno3':'jmeno4
    say jmeno1
    say jmeno2
    say jmeno3
    say jmeno4
    Mám text a vím že jsou v něm jména oddělený dvojtečkou. Příkaz parse převede to co je mezi dvojtečkama na proměnné jmeno1, jmeno2, ...

    Neví někdo jak se to dělá v E nebo i v jinym jazyce, E se docela podobá céčku.
    Naposledy upravil ghh; 25.12.2017, 22:14:49. Důvod: šotek
Zpracovávám...
X