Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Dosc dziwne pytanie o funkcjach:)  (Przeczytany 6918 razy)

alexis

  • Gość
Dosc dziwne pytanie o funkcjach:)
« dnia: 2006-07-28, 07:01:21 »
witam ,

mam suse 10m nie wiem czy parted jest kompitabylny z suse 10 niema takie info .
jak mozna zainstalowac parted na serwer zdalnie? razpakowalem tara i mam katalog,  uzywam winscpd,  wpysuje configure i makefile w powloki i jest blad : -bash: line 44: configure: command not found
Wkatalogu sa te pliki

jestem laikem w linuxie,  

z gory dzieki za pomoc i litosc

pozdro

chmooreck

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #1 dnia: 2006-07-28, 07:25:21 »
polacz sie po ssh (np. putty) bedziesz miec normalna konsole...

feller

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #2 dnia: 2006-07-27, 23:41:22 »
Witam wszystkich serdecznie:) Moje pytanie chyba jest bez sensu, ale szukałem w całym internecie chyba i nic nie znalazłem, to wypróbuje tutaj szczęścia:) Do rzeczy: czy da się w pliku zapisać którą funkcję ma wykonać program? NIE chodzi mi o takie coś: pobierz string->if (string == "funkcja") { funkcja();} else if (string =="inna funkcja"... Takie coś jest wolne ale jedyna rzecz jaka dotychczas działa:) Czy jest jakaś szybsza metoda zeby wykonywac funkcje z pliku??

gomath

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #3 dnia: 2006-07-28, 00:04:46 »
#!/bin/bash
#zapisuje pierwszy parametr skryptu do zmiennej FUNCTION
FUNCTION=$1

#definicje funkcji
function f1 {
        echo "w funkcji f1";
}
function f2 {
        echo "w funkcji f2";
}

#wywołuje podaną w parametrze funkcję
$FUNCTION

spideros1

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #4 dnia: 2006-07-28, 08:59:35 »
Nie można zapisać kodu funkcji do pliku. Tzn. można, ale jak się nie znasz na asemblerze i bardzo dobrze na programowaniu, to raczej tego nie zrobisz.
Masz kilka wyjść (zakładam, że język programowania to c/c++):
1) użyć .so (ew. .dll)

2) Zbindować sobie funkcje w programie pod std::map, e.g.:
typedef void (* funkcja_t)(void);
std::map funkcje;

std::map::iterator i;
i = funkcje.find("nazwa");

if(i != funkcje.end())
  (*i).second()

3) Napisać program wyciągający funkcje z programu wykonywalnego - musi to być kod position independent lub ładowany wyłącznie pod określony adres - sprowadza się praktycznie do tego samego co DLL. Ale i tak byś musiał wykonać relokację.


gomath

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #5 dnia: 2006-07-28, 09:35:22 »
Heh.. nie wiem dlaczego założyłem, że to miało być w BASHu ;)

feller

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #6 dnia: 2006-07-28, 13:57:52 »
2006-07-28 08:59:35 spideros1 napisał:

> Nie można zapisać kodu funkcji do pliku. Tzn. można, ale jak się nie znasz na asemblerze i
 > bardzo dobrze na programowaniu, to raczej tego nie zrobisz.
 > Masz kilka wyjść (zakładam, że język programowania to c/c++):
 > 1) użyć .so (ew. .dll)
 >
 > 2) Zbindować sobie funkcje w programie pod std::map, e.g.:
 > typedef void (* funkcja_t)(void);
 > std::map funkcje;
 >
 > std::map::iterator i;
 > i = funkcje.find("nazwa");
 >
 > if(i != funkcje.end())
 >   (*i).second()
 >
 > 3) Napisać program wyciągający funkcje z programu wykonywalnego - musi to być kod position
 > independent lub ładowany wyłącznie pod określony adres - sprowadza się praktycznie do tego
 > samego co DLL. Ale i tak byś musiał wykonać relokację.
 >
 >
Dziekuje:) wlasnie o cos takiego mniej wiecej mi chodzilo:) Wszystko by bylo pieknie, gdyby to sie jeszce skompilowalo mi hehe:) Kod programu:

#include

int main(int argc, char *argv[])
{
    typedef void(*funkcja_t)(void);
    std::map funkcje;
    std::map::iterator i;
    i = funkcje.find("pri");

    if (i != funkcje.end())
    {
        (*i).second();
    }
}

void pri()
{
    std::cout<<"udalo sie!";
}

I to co mi g++ wypluwa na ekran:

g++ -o func main.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:6: error: ‘map’ is not a member of ‘std’
main.cpp:6: error: expected primary-expression before ‘,’ token
main.cpp:6: error: expected primary-expression before ‘>’ token
main.cpp:6: error: ‘funkcje’ was not declared in this scope
main.cpp:7: error: ‘map’ is not a member of ‘std’
main.cpp:7: error: expected primary-expression before ‘,’ token
main.cpp:7: error: expected primary-expression before ‘>’ token
main.cpp:7: error: ‘::iterator’ has not been declared
main.cpp:7: error: expected `;' before ‘i’
main.cpp:8: error: ‘i’ was not declared in this scope
make: *** [all] Błąd 1

jak cos to jeszce plik Makefile:

all:
   g++ -o func main.cpp

Jeszcze raz dziekuje:):)

feller

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #7 dnia: 2006-07-28, 14:43:35 »
Juz wiem ze nie dodalem #include :). Ale i tak nic sie nie dzieje po wykonaniu programu :/.

spideros1

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #8 dnia: 2006-07-28, 15:39:00 »
2006-07-28 14:43:35 feller napisał:

> Juz wiem ze nie dodalem #include :). Ale i tak nic sie nie dzieje po wykonaniu
 > programu :/.

Musisz sobie ręcznie porejestrować te funkcje.

czyli na początku programu (np. po deklaracji mapy)

mapa["abc"]=abc;

feller

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #9 dnia: 2006-07-28, 16:36:52 »
2006-07-28 15:39:00 spideros1 napisał:

> 2006-07-28 14:43:35 feller napisał:
 >
 > > Juz wiem ze nie dodalem #include :). Ale i tak nic sie nie dzieje po
 > wykonaniu
 >  > programu :/.
 >
 > Musisz sobie ręcznie porejestrować te funkcje.
 >
 > czyli na początku programu (np. po deklaracji mapy)
 >
 > mapa["abc"]=abc;
 >
 >
WIELKIE thx:) Wszystko cacy i ogólnie działa jak marzenie:) Serdecznie dziekuje i pozdrawiam!

Frank

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #10 dnia: 2006-07-28, 17:01:42 »
Czy mógłbyś wkleić ten działający program na forum ?
Gdybyś napisał jeszcze krótki komentarz to może i innym też by się do czegoś przydał.
Pozdrawiam

spideros1

  • Gość
Dosc dziwne pytanie o funkcjach:)
« Odpowiedź #11 dnia: 2006-07-28, 17:38:10 »
2006-07-28 17:01:42 Frank napisał:

> Czy mógłbyś wkleić ten działający program na forum ?
 > Gdybyś napisał jeszcze krótki komentarz to może i innym też by się do czegoś przydał.
 > Pozdrawiam

Akurat bawiłem się z nudów i napisałem 2 kody :)

http://agentj.osk-net.pl/index.php/Callbacki_Cpp

Download tutaj:

http://agentj.osk-net.pl/wysypisko/zassij.php?fn=funkcje.cpp
http://agentj.osk-net.pl/wysypisko/zassij.php?fn=funkcje2.cpp

Pierwszy to najpierw podana przeze mnie metoda z funkcją wykonaj(const std::string& nazwa);

Drugi plik zawiera już bardziej zaawansowaną metodę na wzorcach (komentarze są).

Może się te źródła przydadzą innym.