Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, WinAPI] Konkatenacja dwóch tekstów

Ostatnio zmodyfikowano 2012-12-05 10:38
Autor Wiadomość
berkov
Temat założony przez niniejszego użytkownika
[C++, WinAPI] Konkatenacja dwóch tekstów
» 2012-12-04 19:36:18
Hey ho

Niby prosta czynnos bo w VB np wystarczy uzyc & ... a tu sprawia niezly bol glowy.
Chodzi o konkatenacje
Stram sie dwa stringi polaczyc... bezskutecznie!

po wykonaniu kodu:
C/C++
LPSTR a = "aaa";
LPSTR b = "bbb";
LPSTR Wyn = NULL;
Wyn = lstrcat( a, b );
MessageBox( hwnd, Wyn, "Wow.", MB_ICONINFORMATION );

Wyn jest pusty.


troche poszperalem i zauwazylem ze po wykonaniu:

C/C++
LPSTR a =( LPSTR ) GlobalAlloc( GPTR, 100 );
if( a == NULL ) MessageBox( NULL, "Błąd alokacji", "DUPA", MB_ICONSTOP );

LPSTR b = "bbb";
LPSTR Wyn = NULL;
Wyn = lstrcat( a, b );

zarowno a jak i Wyn sa rowne b!!!???
ale wystarczy ze tutaj przed wywolaniem lstrcat nadam a jakas wartosc (np "aaa") i ponownie Wyn jest pusty a a = "aaa".
nie rozumiem tej funkcji.


Pyt 1. Czy ktos moze wytlumaczyc czemu top nei dziala?


Pyt 2. Czy LPSTR to poprostu pointer na string?
innymi slowy LPSTR x jest wlasciwie rownoznaczne z np string * x albo char * x[]?
P-70343
Mrovqa
» 2012-12-04 19:39:19
Popatrz w nagłówki albo poszukaj w google'u. To na prawdę nie jest aż tak trudne. Serio.
#define LPSTR char*
P-70346
berkov
Temat założony przez niniejszego użytkownika
» 2012-12-04 19:46:44
Dzieki Mrowka - nie pomogles!
LPSTR w zordlach szukalem i chodz teoretycznie wiem co to jest to nie rozumiem po co ktos by to definiowal jeszcze raz. Whatever...

dlaej nie wiem jak polaczyc dwa stringi.
P-70347
pekfos
» 2012-12-04 20:02:07
P-70349
berkov
Temat założony przez niniejszego użytkownika
» 2012-12-04 20:36:24
Ja to naprawde probowalem na wiele sposobow i wiele czytalem.
Dziala jesli "a" jest zdeklarowane jako np char * [100]. ale nie dziala jesli jest to LPSTR dynamicznie zaalokowane o dlugosci 100 (na pewno miejsca nie brakuje!)!

stad tez pojawilo sie wczesniejsze moje pyt 2. czy jest jakas roznica w uzyciu miedzy char * x[] oraz LPSTR x!
bo jesli nie ma to czemu to nie dziala!?

to powinno dzialac a na ekranie zamiast "aaabbb" dostaje "aaa"!!!

C/C++
LPSTR a =( LPSTR ) GlobalAlloc( GPTR, 100 );
if( a == NULL ) MessageBox( NULL, "Błąd alokacji", "DUPA", MB_ICONSTOP );

a = "aaa\0";
LPSTR b = "bbb";

lstrcat( a, b );
MessageBox( hwnd, a, "Wow.", MB_ICONINFORMATION );
P-70352
krzyk
» 2012-12-04 21:07:10
C/C++
a = "aaa\0";
To jest alokacja pamięci,czyli "anulowałeś" GlobalAlloc zamiast wypełnić.
P-70354
Admixior
» 2012-12-04 21:54:09
Uno: zdefiniuj sobie tablice lokalnie lub globalnie i albo ją zainicjalizuj np: char tab[20]="abc";(pamiętając że nie może wtedy być tekst dłuższy od 20-1=19 znaków (ostatni to null).
Jak nie znasz długości użyj addr=new char[x]; zamiast GlobalAlloc() a później do zwalniania delete[] addr;  //używając new jesteś zmuszony do użycia strcopy lub podobnej funkcji.

Duo: char* ab="abc";    // cudzysłów zwraca wartość const char* więc nie możesz jej edytować bo inaczej skraszuje progs, a po za tym nie zarezerwowałeś miejsca dla następny elementów...
P-70356
Mrovqa
» 2012-12-04 21:55:41
czy jest jakas roznica w uzyciu miedzy char * x[] oraz LPSTR x!
Eh... było to już napisane.
char*[] == char**
LPSTR == char*
P-70357
« 1 » 2
  Strona 1 z 2 Następna strona