Stránka 1 z 2 12 PosledníPoslední
Zobrazuji výsledky 1 až 20 z 22

Téma: AmigaE

  1. #1
    ghh's Avatar
    Datum registrace
    14.10.2006
    Město
    Praha
    Věk
    43
    Příspěvků
    1347
    Post Thanks / Like

    Lightbulb 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 v 21:14:49 Důvod: šotek
    Amiga DraCo DaMi PegasosII G4 G5

  2. #2
    Czech Amiga News ExiE's Avatar
    Datum registrace
    12.04.2009
    Město
    NY
    Příspěvků
    1350
    Post Thanks / Like

    Výchozí O: AmigaE

    Quote ghh původně napsal: View Post
    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...

  3. #3
    Administrátor Doda's Avatar
    Datum registrace
    24.10.2006
    Město
    Praha
    Věk
    44
    Příspěvků
    3417
    Post Thanks / Like

    Výchozí O: AmigaE

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

  4. #4
    ghh's Avatar
    Datum registrace
    14.10.2006
    Město
    Praha
    Věk
    43
    Příspěvků
    1347
    Post Thanks / Like

    Question 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);
    }
    Amiga DraCo DaMi PegasosII G4 G5

  5. #5
    D.T.A. Software Studio DJM's Avatar
    Datum registrace
    03.02.2013
    Město
    Nitrianske Rudno
    Věk
    37
    Příspěvků
    907
    Post Thanks / Like

    Výchozí O: AmigaE

    Ta funkcia SplitString() je tam zbytocne, ked sa v nej nic nerobi, len as vracia str...
    Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
    Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

  6. #6
    ghh's Avatar
    Datum registrace
    14.10.2006
    Město
    Praha
    Věk
    43
    Příspěvků
    1347
    Post Thanks / Like

    Question 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?
    Amiga DraCo DaMi PegasosII G4 G5

  7. #7
    Czech Amiga News ExiE's Avatar
    Datum registrace
    12.04.2009
    Město
    NY
    Příspěvků
    1350
    Post Thanks / Like

    Výchozí 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...

  8. #8
    D.T.A. Software Studio DJM's Avatar
    Datum registrace
    03.02.2013
    Město
    Nitrianske Rudno
    Věk
    37
    Příspěvků
    907
    Post Thanks / Like

    Výchozí 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..
    Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
    Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

  9. #9
    D.T.A. Software Studio DJM's Avatar
    Datum registrace
    03.02.2013
    Město
    Nitrianske Rudno
    Věk
    37
    Příspěvků
    907
    Post Thanks / Like

    Výchozí 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]; // maximalne 4 slova,pre viac slov staci zmenit 4 za pozadovany pocet
    
    void main()
    {        
             //init na zaciatku a zapise sa rovno adresa prveho slova
             p=0; c=0;
             output[c++]=&input[p];
    
             //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
             while(input[p]!=0) {
             if(input[p-1]==':') { input[p-1]=0; output[c++]=&input[p]; }
             p++;
             }
    
             //Vysledne adresy kazdeho slova sa nachadzaju v poli output[].
             //Pre kontrolu si ich vypiseme.
             for(p=0;p<4;p++) {
             printf("%s\n",output[p]);
             }
    }
    Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide
    Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)

  10. Poděkovat ghh - tito lidé za příspěvek poděkovali
    Líbí se mi kunilingus - těmto lidem se příspěvek líbí
  11. #10
    ghh's Avatar
    Datum registrace
    14.10.2006
    Město
    Praha
    Věk
    43
    Příspěvků
    1347
    Post Thanks / Like

    Výchozí 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 v 02:36:13 Důvod: vice
    Amiga DraCo DaMi PegasosII G4 G5

  12. #11
    Czech Amiga News ExiE's Avatar
    Datum registrace
    12.04.2009
    Město
    NY
    Příspěvků
    1350
    Post Thanks / Like

    Výchozí O: AmigaE

    Quote ghh původně napsal: View Post
    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()

  13. #12
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí 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í .
    Amiga - PMD 85

  14. #13
    ghh's Avatar
    Datum registrace
    14.10.2006
    Město
    Praha
    Věk
    43
    Příspěvků
    1347
    Post Thanks / Like

    Výchozí O: AmigaE

    Priznam se ze jsem to teda moc nepochopil...
    Amiga DraCo DaMi PegasosII G4 G5

  15. #14
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí 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 Lisiak4 : 28.12.2017 v 05:54:18
    Amiga - PMD 85

  16. #15
    Czech Amiga News ExiE's Avatar
    Datum registrace
    12.04.2009
    Město
    NY
    Příspěvků
    1350
    Post Thanks / Like

    Výchozí O: AmigaE

    Quote Lisiak4 původně napsal: View Post
    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...

  17. #16
    amiga autista Lisiak4's Avatar
    Datum registrace
    13.04.2009
    Město
    Brno - Bystrc
    Věk
    40
    Příspěvků
    1879
    Post Thanks / Like

    Výchozí O: AmigaE

    Quote ExiE původně napsal: View Post
    Priznam se ze jsem to teda moc nepochopil...
    No jde o to, že když ke každému řetězci "macX" bude přiřazena 1 adresa, ke které přistupuješ za splněním podmínky samotnýho IFu, tak na to, aby si pracoval s konkrétní adresou přiřazenou ke konkrétnímu řetězci stačí dělat split() s textem čím se zjednodušuje řešení samotného problému. Neříkám, že je to řešení lepší, ale jednodušší. Já bych to tak, jako DJM napsat neuměl.

    Tohle jde použít pouze pokud je ta mac adresa opravdu známá, tedy vybírá se z různých předem daných mac adres, jinak je to mé řešení k ničemu a já danou situaci špatně pochopil, za co se omlouvám .
    Amiga - PMD 85

  18. #17
    ghh's Avatar
    Datum registrace
    14.10.2006
    Město
    Praha
    Věk
    43
    Příspěvků
    1347
    Post Thanks / Like

    Smile O: AmigaE

    Tak tak, mac adresu zadava uzivatel, takze neni predem znama, pouze znam jeji tvar. Chci to konkretne k tomuhle:
    Klikněte na obrázek pro zobrazení větší verze

Název: muiwake0.2.jpg
Zobrazeno: 96
Velikost: 24,7 KB
ID: 8084
    Rozkouskovat adresu a vyplnit editacni pole v okne Edit. Takze potrebuju aby byly v promenne. Dneska me v praci pri skrabani brambor neco napadlo a asi to pujde.
    Celej tenhle "problem" vzniknul jen proto ze jsem si fakt myslel ze parsovani bude tak jednoduchy jako v Arexxu
    Amiga DraCo DaMi PegasosII G4 G5

  19. #18
    Czech Amiga News ExiE's Avatar
    Datum registrace
    12.04.2009
    Město
    NY
    Příspěvků
    1350
    Post Thanks / Like

    Výchozí O: AmigaE

    Quote ghh původně napsal: View Post
    Tak tak, mac adresu zadava uzivatel, takze neni predem znama, pouze znam jeji tvar. Chci to konkretne k tomuhle:
    Rozkouskovat adresu a vyplnit editacni pole v okne Edit. Takze potrebuju aby byly v promenne. Dneska me v praci pri skrabani brambor neco napadlo a asi to pujde.
    Celej tenhle "problem" vzniknul jen proto ze jsem si fakt myslel ze parsovani bude tak jednoduchy jako v Arexxu
    Code:
    #include <stdio.h>
    
    int main() {
        int a[6];
        int i;
        const char *MAC = "aa:bb:cc:dd:ee:ff";
    
        sscanf(MAC, "%x:%x:%x:%x:%x:%x", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5]);
    
        for (i = 0; i < 6; i++) {
            printf("%x ", a[i]);
        }
    }

  20. Poděkovat ghh - tito lidé za příspěvek poděkovali
  21. #19
    ghh's Avatar
    Datum registrace
    14.10.2006
    Město
    Praha
    Věk
    43
    Příspěvků
    1347
    Post Thanks / Like

    Výchozí O: AmigaE

    Bezva, tohle mi taky funguje. Vezte ze oba priklady dukladne prozkoumam a pokusim se prepsat do E.
    Amiga DraCo DaMi PegasosII G4 G5

  22. #20
    ghh's Avatar
    Datum registrace
    14.10.2006
    Město
    Praha
    Věk
    43
    Příspěvků
    1347
    Post Thanks / Like

    Lightbulb O: AmigaE

    Prekonvertoval jsem MUI5 moduly pro AmigaE (ECX), tady jsou ke stazeni.
    http://www.morphos-storage.net/?page...odules_0.2.lha
    Amiga DraCo DaMi PegasosII G4 G5

  23. Líbí se mi davesade - těmto lidem se příspěvek líbí

Povolení psaní zpráv

  • Nemůžete otevírat nová témata
  • Nemůžete odesílat odpovědi
  • Nemůžete připojovat přílohy
  • Nemůžete upravovat své příspěvky
  •  
Thumbnail Screenshots by Thumbshots