C++ 6 Builder zamiana formatu liczb

Odpowiedz Nowy wątek
2017-01-25 14:43
Gorący Kret
0

Witam,
Chciałem się zapytać jak zamienić w zmiennej Float bądź Double przecinki na kropki.
Domyślnie liczby mają cyfry po przecinku (np: 87,456), a mi chodzi tylko o to by zamiast tego był wyświetlane kropki (np:87.456).
Z góry dziękuję za pomoc.

Pozostało 580 znaków

2017-01-25 14:45
0

A nie odwrotnie jest? W każdym razie możesz zrobić konwersje na string i zamienić każde wystąpienie ',' na '.'


"Jesteśmy świadomymi istotami, a życie jest sposobem w jaki wszechświat poznaje sam siebie." prof. Brian Cox

Pozostało 580 znaków

2017-01-25 15:02
Gorący Kret
0

Właśnie nie, po wyświetleniu tego w RichEdit widać że liczby są przecinkowe.

Czyli zamienić to za pomocą AnsiString. Za pomocą jakiej komendy zamieniać w każdej linii (ponieważ jest to pętla) przecinki na kropki?

Póki co wygląda to tak: RichEdit1->Lines->Add(AnsiString(longitude) + "," + AnsiString(latitude) + ",0");

Pozostało 580 znaków

2017-01-25 15:05
0

A nie lepiej użyć do tego calcedit i wtedy przecinek czy kropka zależą od lokalizacji systemu.

Takie rozwiązanie uzależnione jest od lokalizacji systemu, czyli jak jest PL to nie zadziała. - bl4ster 2017-01-25 15:16
Eee ale o to chodzi właśnie, żeby było poprawne, niezależnie czy mamy system metryczny amerykański czy europejski ? - lukas_gab 2017-01-25 15:27

Pozostało 580 znaków

2017-01-25 15:10
Gorący Kret
0

Ma to być prosty konwerter który zamienia zawartość pliku .txt na .kml, na zaliczenie z przedmiotu.
Cały konwerter działa tylko właśnie w pliku .kml potrzebne są kropki w współrzędnych a nie przecinki.

Sam osobiście jestem zielony w środowisku c++ i calcedit mi nic nie mówi :P

Pozostało 580 znaków

2017-01-25 15:15
0

Tak na szybko. Mogłem zrobić jakiś błąd:

string longitude = AnsiString(longitude);
int position = longitude.find(',');
longitude = longitude.erase(position, 1).insert(position+1, '.';
string latitude = AnsiString(latitude)
 RichEdit1->Lines->Add(longitude + "," + latitude + ",0");

To samo trzeba zrobić z latitude.


"Jesteśmy świadomymi istotami, a życie jest sposobem w jaki wszechświat poznaje sam siebie." prof. Brian Cox
edytowany 1x, ostatnio: bl4ster, 2017-01-25 15:17

Pozostało 580 znaków

2017-01-25 15:21
Gorący Kret
0

Super, dzięki wielkie. Zaraz to sprawdzę, w międzyczasie znalazłem inne rozwiązanie, ale też działa :D

AnsiString szerokosc=FloatToStr(latitude);
        szerokosc=StringReplace(szerokosc,",",".",TReplaceFlags());
        AnsiString dlugosc=FloatToStr(longitude);
        dlugosc=StringReplace(dlugosc,",",".",TReplaceFlags());
        AnsiString pozycja=dlugosc+","+szerokosc;
RichEdit1->Lines->Add(pozycja);

Dzięki jeszcze raz :)

Pozostało 580 znaków

2017-01-25 15:29
0
Gorący Kret napisał(a):

Ma to być prosty konwerter który zamienia zawartość pliku .txt na .kml, na zaliczenie z przedmiotu.
Cały konwerter działa tylko właśnie w pliku .kml potrzebne są kropki w współrzędnych a nie przecinki.

Sam osobiście jestem zielony w środowisku c++ i calcedit mi nic nie mówi :P

Coś mi się wydaje, że zły problem rozwiązujemy ;) Co to za współrzędne i dlaczego mają tam być kropki ? Może to co zrobiliście działa, ale nie koniecznie jest to poprawne i zgodne z kunsztem programistycznym.

Pozostało 580 znaków

2017-01-25 15:31
Gorący Kret
0

To ma być konwerter który odczytuje depeszę GPS (plik tekstowy), wybiera z poszczególnych linii pozycję i zapisauje to jako plik KML (do odczytania w Google Earth).

W pliku KML występują kropki a nie przecinki w współrzędnych dlatego potrzebna była zamiana. Jedyny problem jaki mi pozsotał to dlaczego gdy teoretycznie zapisauję gotowy plik w formacie *.kml (w filtrze savedialog1 tak ustawiłem), to zapisuje mi plik ale bez żadnego rozszerzenia :/

Mam nadzieję, że do tego dojdę.

Pozostało 580 znaków

2017-01-25 15:47
0

Ok, a co do tego ma RichEdit ? Powinieneś mieć klasę współrzędnych. Klasa pliku powinna zawierać kolekcje obiektów klasy współrzędna. Dalej powinieneś mieć property którym pobierzesz wartość współrzędnej do RichEdit czy TextEdit etc. a osobna funkcja powinna serializować współrzędne etc. do pliku. Chyba, popełniona została tutaj niezła kołomyja.

Pozostało 580 znaków

2017-01-25 15:53
Gorący Kret
0

Program wygląda w ten sposób że po wczytaniu pliku Depeszy jego zawartość wyświetla się w pierwszym oknie Memo1.
Potem przekonwertowana treść wyświetla się w oknie RichEdit1 - myślę, że równie dobrze mogłoby być Memo2. Na zajęciach używaliśmy obu form, a główną różnicą między nimi z tego co przeczytałem (w necie oczywiście bo na zajęciach gówno powiedzą) jest ich pojemność i że w RichEdit można edytować tekst.

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