Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: C++ --> VB
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004
C++ --> VB

Witam

Może mi ktoś przekształcić te zapisy w C:

DWORD dwSize = 0x10000 * 0x10;
char * base;
base = (char*)malloc(dwSize*2);
ptr2 = base + dwSize;

No wiadomo że DWORD to odpowidnik LONG'a w VB.

Pozdrawiam


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

18-12-2004 23:48
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Co prawda ja tego nie przekształcę (no chyba, że linijki 2 i 4 ), ale jedna uwaga: DWORD nie ma w VB odpowiednika.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

19-12-2004 03:26
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Jak nie ma a Long  - zajmuje tyle samo bajtów co DWORD


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

19-12-2004 10:27
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003



DWORD dwSize = 0x10000 * 0x10;
char * base;
base = (char*)malloc(dwSize*2);
ptr2 = base + dwSize;



W pierwszej linii definicja i przypisanie wartości dla zmiennej licznbowej
Linia druga to utworzenie zmiennej typu char (string w VB), utworzenie wskaźnika do tej zmiennej.
W trzeciej linii zostaje określona wielkość zmiennej typu char, sama zmienna jest nieokreśona (pusta), a jedynie zostaje jej zarezerwowana wielkość
Linii czwartej Ci nie przetłumaczę, bo nie wiem jakiego typu jest 'ptr'...


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

19-12-2004 12:52
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

DJK: 2-znakowy String również zajmuje 32 bity a nie jest to jednak odpowiednik DWORD'a . Nie chodzi tylko o rozmiar, ale także o wykonywane operacje. DWORD przechowuje liczby całkowite od 0 do 4294967295, podczas, gdy Long od -2147483648 do 2147483647 . Żeby przechować liczbę z DWORD we wbudowanej zmiennej VB potrzeba np. zmiennej typu Currency. Ale ta z koleji jest 64-bitowa i nie da się na niej wykonać takich operacji bitowych jak na DWORD. Dlatego mówię, że nie ma odpowiednika. Oczywiscie zawsze można spróbować stworzyć (ostatnio w którymś wątku o GG było).


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

19-12-2004 15:15
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Ja dalej uważam tak jak uważam - zawsze jak widzę strukturę napisaną w C++ to ta sama struktura zapisana jest w taki sposób że zmienna która pod C++ jest DWORD, w VB jest jako LONG.

Do losmaca:

To że to czy tamto to przypisanie to jest dla mnie oczywiste. Chodzi mi o to jak zapisać to w VB - jeżeli chodzi o pierwszą zmienna to już wiem że jest to wartość 1048576 ale co z tym "malloc"

P.S. ptr jest tego samego typu co base

[Post edytowany dnia 19-12-2004 16:39 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

19-12-2004 16:37
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Pewnie masz na myśli np. deklaracje typów dla API itd. . Tam wynika to z konieczności zachowania tego samego układu pamieci - to wszystko. Ale nie jest to to samo. Owszem - gdyby rozpatrywać tylko pierwsze 31 bitów - zachowują się identycznie. Ale problemy powstają, gdy ostatni bit jest równy 1. Dla DWORD znaczy to tyle, co dodanie 2^31. Natomiast zapalenie ostatniego bitu w Long oznacza wartość ujemną - na dodatek zanegowaną.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

19-12-2004 17:15
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

...malloc... powiadzasz

To, jak już powiedziałem, określenie wielkości zmiennej typu char.
Czyli: Dim zmienna As String *30

lub
Dim zmienna As String
zmienna = String$(512, vbNullChar)


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

19-12-2004 22:02
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Więcej na ten temat poczytaj tutaj


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

19-12-2004 22:11
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Wszystkich odpowiedzi: 8 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1