
Panowie, litości!
//---------------------------------------------------------------------------
void __fastcall TForm1::Memo1KeyPress(TObject *Sender, wchar_t &Key)
{
if(wcschr(L"łśćż", Key)) Key = NULL;
}
//---------------------------------------------------------------------------

To wyraźnie wskazuje, że masz o sobie wysokie mniemanie i innych traktujesz z góry,
strchr musi jednak przeglądać łańcuch znaków, tylko, że na pewno stosuje wydajniejszy algorytm niż pętla for.
ale wtedy nie wyszłoby np. to, że funkcja strcpy w środowisku Turbo C++ nieprawidłowo przekazuje wartości, a tak kurczez już wie, że jeżeli kiedyś będzie potrzebował użyć funkcji strcpy to zamiast niej trzeba użyć strncpy
- Kod: Zaznacz cały
char keyString[3];
...
strcpy(&keyString[2], "ś");

No widzisz, doszliście do złych wnioskówBo strcpy działa jak należy, tylko użyliście jej w nieodpowiedni sposób:
- Kod: Zaznacz cały
char keyString[3];
...
strcpy(&keyString[2], "ś");
widzisz błąd?
Użycie strncpy do kopiowania jednego znaku jest pozbawione sensu.
|
ironia (łc. z gr. eironeía) ukryta kpina (drwina) z kogoś lub czegoś, ujęta m.in. w formę pozornego uznania, akceptacji, aprobaty. |

Nie widzę błędu. W C++Builder 2007 strcpy i wstrcpy w C++Builder 2010 działają bezbłędnie.
strcpy(&keyString[2], "ś"); // Po wykonaniu tej linijki kodu zmienna Key zmienia wartość z "f" na '\x01'
[...] dzieje tam się coś dziwnego. Nagle zmienna sama zmienia wartość.
gdybym zapisał to tak: strcpy(keyString[2], "ś"); to byłby błąd.
Wyłapałem ironię, ale co to zmienia. Czy napiszę, że traktujesz ludzi z góry, czy też, że kpisz z nich, czy też pogardzasz nimi - na jedno wyjdzie.

Odbijając piłeczkę zakładając, że nie jestem inteligentny bo nie załapałem ironii to czy człowiek, który wyśmiewa się z kogoś inteligencji jest inteligentny?

błąd jest ewidentny, ma nawet swoje efekty uboczne![]()
Pozwól, że przytoczę kurczeza:
strcpy(&keyString[2], "ś"); // Po wykonaniu tej linijki kodu zmienna Key zmienia wartość z "f" na '\x01'

Odpowiem na to pytanie, jeśli pokażesz mi, gdzie wyśmiewam twoją inteligencję. Ok?
Co do samej formy, miała być nieco ironiczna, no ale to nie powód do obrażania się. Inteligentny człowiek wyłapie ironię, jej intencję...

Cyfrowy Baron napisał(a):Owszem! W Turbo C++, w C++Builder 2007 i 2010 ten błąd nie występuje, zwracane są prawidłowe wartości

Natomiast nie spodobało mi się to, że w swoich postach robisz z siebie gooru ośmieszając innych.
Zostało to tak napisane, jakoby my nie zrozumieliśmy ironii i dlatego mamy pretensje a jeśli nie zrozumieliśmy to nie jesteśmy inteligent
Nie czytasz uważnie błąd występuje tylko w Turbo C++.

Spróbuj włączyć CodeGuard'a




Cyfrowy Baron napisał(a):Nie dostrzegam błędu. Sprawdzałem na różne sposoby, nie ma w tej zmiennej nic ponad to co tam wprowadziłem, więc nie rozumiem gdzie mam doszukiwać sie tego błędu.

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość