C++ Builder 6 problem z kontrolą edit

C++ Builder 6 problem z kontrolą edit
ujemny
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Lublin
0

Witam,
Staram się pobrać dane z kontrolki edit w ten sposób:

DWORD dlugosc = GetWindowTextLength(Edit1);
LPSTR Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 );
GetWindowText(Edit1, Bufor, dlugosc + 1 );

Sposób ten jest podany w wielu miejscach, niestety "Bufor" pozastaje u mnie pusty.


edytowany 1x, ostatnio: madmike
MA
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 14 lat
  • Postów:4
0

Najprościej laxical_cast z Boost zapewne

Dzieje się to w ten sposób, że algorytm przetwarza ciąg znaków i buduje z tego liczbę. Najprostszym i przenośnym* jest użycie modyfikacji algorytmu do liczb całkowitych. Niemniej nie weźmie on pod uwagę specyficznych właściwości typów zmiennoprzecinkowych dostępnych na danej platformie, więc konwersja będzie zawierała więcej niedokładności niż przy wykorzystaniu algorytmów pisanych pod konkretne typy (np. IEEE-754 Single). Żeby jednak napisać ten ostatni, musisz poznać dobrze tak liczby zmiennoprzecinkowe, jak i niuanse ich implementacji na danej platformie.

ujemny
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Lublin
0

Ja chce tylko pobrać stringa z edit, czy moglibyście podać jakiś przykład? jak mówiłem dopiero zaczynam przygodę z programowaniem.


MA
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 14 lat
  • Postów:4
0

DWORD dlugosc = GetWindowTextLength(hText);
LPSTR Bufor = (LPSTR)GlobalAlloc(GPTR, ++dlugosc);
GetWindowText(hText, Bufor, dlugosc);
SetWindowText(hwnd, Bufor);
GlobalFree(Bufor);

hText - pole edit;

To wpisujesz jeżeli button zostanie wciśnięty.

HWND hText
DWORD dlugosc = GetWindowTextLength(hText);
LPSTR Bufor = (LPSTR)GlobalAlloc(GPTR, ++dlugosc);
GetWindowText(hText, Bufor, dlugosc);
MessageBox(NULL,"jakis tekst",Bufor,MB_OK)
GlobalFree(Bufor);

ujemny
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Lublin
0

Niestety wyświetla mi jedynie "jakis tekst" a z pola edit nie pobiera

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND Edit1;
DWORD dlugosc = GetWindowTextLength(Edit1);
LPSTR Bufor = (LPSTR)GlobalAlloc(GPTR, ++dlugosc);
GetWindowText(Edit1, Bufor, dlugosc);
MessageBox(NULL,"jakis tekst",Bufor,MB_OK);
GlobalFree(Bufor);
}


darkbit
  • Rejestracja:ponad 20 lat
  • Ostatnio:8 dni
  • Lokalizacja:~Koszalin
0

HWND Edit1;
DWORD dlugosc = GetWindowTextLength(Edit1);

A Edit1 to niby czego uchwytem tu jest?

Piszesz, że używasz Buildera 6, więc albo tak:

Kopiuj
HWND Edit1 = NazwaTEditaTwojego->Handle;
//... dalej Twój kod

lub nie łatwiej tak:

Kopiuj
AnsiString as_text = NazwaEditaTwojego->Text;
ShowMessage(as_text);
ujemny
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Lublin
0

No Edit1 to nazwa mojego edita, kolego ja naprawdę rano włączyłem pierwszy raz buildera, wcześniej z c++ miałem do czynienia tylko na lekcjach, ale to same podstawy


darkbit
  • Rejestracja:ponad 20 lat
  • Ostatnio:8 dni
  • Lokalizacja:~Koszalin
0

No to zamiast tego:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND Edit1;
DWORD dlugosc = GetWindowTextLength(Edit1);
LPSTR Bufor = (LPSTR)GlobalAlloc(GPTR, ++dlugosc);
GetWindowText(Edit1, Bufor, dlugosc);
MessageBox(NULL,"jakis tekst",Bufor,MB_OK);
GlobalFree(Bufor);
}

wstaw to:

Kopiuj
void __fastcall TForm1::Button1Click(TObject *Sender)
 {
     ShowMessage(Edit1->Text);
 }
edytowany 1x, ostatnio: darkbit
ujemny
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Lublin
0

Dzięki działa; ]
A jak mam zrobić, żeby to zapisać do jakiej kol wiek zmiennej string?? bo muszę podać to jako argument funkcji. Kiedyś używałem Borland Delphi 7, ale z tego co pamiętam tam nie było takich problemów bo podawałem jako argument po prostu nazwę edita.


darkbit
  • Rejestracja:ponad 20 lat
  • Ostatnio:8 dni
  • Lokalizacja:~Koszalin
0

Jeśli to ma być std::string to:
string str = Edit1->Text.c_str();

ujemny
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Lublin
0

Dzięki wielkie kolego.
Pozdrawiam i jeszcze raz dziękuję za pomoc,
Adrian.


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.