system('komenda') w Delphi

Odpowiedz Nowy wątek
2011-08-12 18:41
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...


Pozostało 580 znaków

2011-08-12 18:57
Rev

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


Chcp nie jest poleceniem cmd. - Patryk27 2011-08-12 18:59
Ale popróbuję z CharToOemBuff :) - Patryk27 2011-08-12 19:01

Pozostało 580 znaków

2011-08-12 19:10
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;

Pozostało 580 znaków

2011-08-12 19:46
Rev
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.


dzięki, przyda się - Azarien 2011-08-12 20:07

Pozostało 580 znaków

2011-08-12 20:09
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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