Witam.
Czy istnieje coś takiego, jak jest np. w C++ - system('komenda')
w Delphi?
Potrzebuję mieć znaki diakrytyczne w konsoli, więc musiałbym wywołać chcp
.
Kombinuję od dłuższego czasu i nic nie mogę wymyślić :-|
Chyba, że jest inny sposób, aby mieć polskie znaki w konsoli...
chcp to przypadkiem nie jest polecenie programu cmd? Ten program ma niedużo wspólnego z konsolą zwykłej aplikacji.
W C/C++ użyłbym CharToOemBuff albo, IMO najprościej, używać typu wchar_t i na początku wywołać setlocale z utf-8. Chyba najprostszy sposób na uzyskanie polskich znaków w standardowych funkcjach bibliotecznych na Windowsie i Linuksach (mogą się różnić nazwy locale i właściwie tyle).
Ok, dzięki - udało się z CharToOemBuff
Jakby ktoś chciał, to procedurka:
Procedure Display(Text: String);
Var Input, Output: PChar;
Begin
Input := PChar(Text);
GetMem(Output, Length(Input)); // Nie wiem, czy to jest dobrze, ale działa, więc się nie czepiam ;)
CharToOemBuff(Input, Output, Length(Input));
WriteLn(Output);
End;
A jakby ktoś chce być trendi i użyć Unicode, to wersja w C++ działająca na Windowsie i Debianie:
#include <iostream>
#include <cstdio>
#include <locale>
#ifdef WIN32
#define LOCALE "polish"
#else
#define LOCALE "pl_PL.UTF-8"
#endif
using namespace std;
int main()
{
setlocale(LC_ALL, LOCALE);
wchar_t napis[] = L"żółw";
wcout << napis << std::endl;
wprintf(L"%ls, ilość znaków: %d\n", napis, wcslen(napis));
return 0;
}
Oczywiście plik zapisany w UTF-8.
Chyba, że jest inny sposób, aby mieć polskie znaki w konsoli...
tak, zapisać plik źródłowy w kodowaniu CP852. wtedy normalnie będą polskie litery, bez zmian w kodzie.