[DELPHI] Nietypowa konwersja String na Integer.

0

Czy istnieje sposób na zapisanie wartości String w Integer, tak, żeby było możlowe odczytanie tej wartości?
Nie mam na mysli konwersji liczb (StrToInt, StrToIntDef, itp.) a konwersję tekstu. Próbowałem z użyciem:

var
i: Integer;
begin
i := Integer(StrNew(PChar('TEKST. :D'))); // Przypisanie wartości
ShowMessage(PChar(I)); // Odczytanie wartości

Ale problem jest tu, że działa to tylko w obrębie jednego procesu... A ja chcę te informacje wymieniać między programami...

Z góry dziękuję za odpowiedzi.

[EDIT]
Literówka..

0

Tobie chodzi o wskazniki:
Wskaźniki
a jesli chcesz wymieniac dane miedzy procesami, to juz kilka razy bylo na forum...

o... to powinnoo Ci sie przydac:

"...transfer strings, images (streams) between processes?"
:
http://www.swissdelphicenter.ch/torry/showcode.php?id=1242

0

Właśnie chodzi o to że wskaźniki nie działają za dobrze. :D Program ma działać tak: konwersa String->Integer => przesłanie danych przez internet => konwersja Integer->String...

0

Nie myl integer ze wskaźnikiem. Integer ma tylko 4 bajty, więc ze stringa wyciągniesz najwyżej 4 znaki - przypisując bajt po bajcie! Wysyłając 'wskaźnik', nie masz wysyłać wartości wskaźnika, tylko to na co wskazuje.

To co pokazałeś w pierwszym poście nie działa, bo do integer nie dałeś stringa tylko jego adres, który z innego procesu nie jest dostępny.

0

Wiem że to nie działa... Dlatego pytam czy jest jakaś metoda na "przechowanie" Stringa w Integer (dokładniej Int64), znam też różnice w rozmiarach... Próbowałem też przepisać bajty po kolei do Int64 (np. 045053), ale to się nie sprawdza, ze względu na ograniczenia długości...
Rozwiązałem problem inaczej - program posiada tablicę Stringów i nie wysyła tekstu, a tylko indeks elementu... Jako że nie chodzi tu o teksty użytkownika, a te wcześniej zdefiniowane, rozwiązania działa idealnie.

0

a ja nadal nie rozumiem (choć czytałem cały topic ze trzy razy) po co do przesyłania napisów przez internet chcesz je zamieniać na integer. A nie możesz normalnie jak człowiek napisu przesłać :>

0

Nie mogę.:P Bo używam protokołu Gadu-Gadu i trochę "rozszerzam" jego możliwości.
W gruncie rzeczy mógłbym trochę się pobawić w nowe struktury, doklejane do wysyłanych danych, ale chyba łatwiej jest modyfikować to co już jest.

0

no to tak trochę pomarudzę i może ktoś dostanie olśnienia, bo jak na razie to widzę, że niektórzy :P by chcieli zobić coś magicznego. Popatrz masz string, ma on np. 36 znaków i teraz choćbyś nie wiem co robł to żeby go wysłać (w obojętnie jakiej postaci) musisz min 37 bajtów wysłać. Możesz to zapakować w Integera i wysłać wtedy 10 intów. Pisałeś o wskaźnikach, to jak to sobie wyobrażałeś? Że wyślesz przez net wskaźnik a odbiorca magicznym sposobem dostanie w pamięci w miejscu wskazywanym przez ten wskaźnik prawidłowy tekst?? Jeśli chcesz text zmniejszyć to możesz go spakować (alg. rara, zipa, huffman najprostszy) - dostaniesz ciąg bitów, które sobie wstawisz w co będziesz chciał (char, Integer, Int64, ...) a potem rozpakujesz.
Ale zawsze te znaki musisz wysłać w takiej lub innej postaci ale musisz.
Oczywiście rozwiązań na około też się trochę znajdzie, np. Twoje z tablicą i przesyłaniem jedynie indexu. Z tym, że są to protezy i wcześniej czy później przestanie ono wystarczać ...

0
Nex napisał(a)

Ale problem jest tu, że działa to tylko w obrębie jednego procesu... A ja chcę te informacje wymieniać między programami...

trzeba bylo od razu pisac, ze chcesz to przeslac przez net :-/

0

Misekd - Pisałem własnie na początku, że wskaźniki nie działają (boć nie powinny działać:D) i szukam innego sposobu. :P Od razu wydawało mi się to (String na Integer) troche nieprawdopodobne, ale liczyłem na to, że jest jakis sposób. Ryzykowałem z tym bo muszę się trzymac protokołu GG. Największym ograniczeniem jest to, że nie mogę zmienić wilekości pakietów, bo mój program może to obsłuży, ale GG już nie, a chodzi przecież o zachowanie kompatybilności. Więc w tym przypadku, tablica była nienajgorszym rozwiązaniem, choć pewnie nie najlepszym.

cimak - Masz mnie, spore niedopowiedzenie z tym netem.. Mea culpa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1