Robię trochę pracy nad starszą aplikacją, a moje umiejętności VB6 nie są tak wspaniałe. Muszę sprawdzić, czy pole String zostało zainicjowane i ustawione na coś innego niż null/nothing lub pusty ciąg znaków. W języku C# chcę tylko zrobić coś takiego:Odpowiednik ciągu VB6.IsNullOrEmpty
if (string.IsNullOrEmpty(myObj.Str))
Nie jestem pewien, co równoznaczne było w VB6 i jestem nerwowy temat korzystania If myObj.Str = ""
i nazywając ją dobrze. Jaki jest właściwy sposób na zrobienie tego?
celu wyjaśnienia, chcę coś, co zwróci true, jeśli którykolwiek z następujących warunków:
- Pole nie został zainicjowany
- Pole jest pusty ciąg znaków (str = „”, length = 0)
- To pole ma wartość NULL lub nic, lub vbnull, lub jakakolwiek forma wartości pustej dotyczy ciągów VB6.
Pole pierwotnie był długi, a kod mam zastępując sprawdzić, czy została ona ustawiona na 0.
Przesyłanie vbNullString do argumentu LPCSTR funkcji API może być problemem. – wqw
@wqw Rzeczywista (ale dość rzadka sytuacja). Będę edytować, aby powiedzieć "prawie każdy" – MarkJ
Niepoprawnie. Ciągi nie są automatycznie inicjalizowane, aby były puste. Użycie StrPtr (s) zwróci 0 dla łańcucha zerowego (vbNullString), a StrPtr ("") zwróci adres pustego łańcucha. Jednak VB6 naprawdę traktuje je tak samo, to tylko wywołania API, które mogą być ważne. –