system('komenda') w Delphi

0

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...

1

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).

0

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;
0

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.

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1