CYFROWY BARON • PROGRAMOWANIE • Zobacz wÄ…tek - Problem z konwersjÄ…

Problem z konwersjÄ…

dział ogólny

Problem z konwersjÄ…

Nowy postprzez nvdante » piÄ…tek, 20 sierpnia 2010, 20:08

Witam

Problem zapewne banalny dla Was. Otóż chciałbym do jednego ListBox'a zapisać dwie wartości, w taki sposób:

KOD cpp:   •  UKRYJ  •
ListBox1->Items->Add(a, b);


Czy moglibyście podpowiedzieć mi, jak prawidłowo zrobić tu konwersję?

Edit: a i b to int.


Z góry dziękuję.
Pozdrawiam
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
PodziÄ™kowaÅ‚ : 8
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows XPFirefox

Re: Problemik z konwersjÄ…

Nowy postprzez Corvis » piÄ…tek, 20 sierpnia 2010, 22:19

KOD cpp:   •  UKRYJ  •
ListBox1->Items->Add( String(a) + "," + String(b) );
Ostatnio edytowano wtorek, 24 sierpnia 2010, 09:56 przez Corvis, łącznie edytowano 1 raz
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaOpera

Re: Problemik z konwersjÄ…

Nowy postprzez nvdante » piÄ…tek, 20 sierpnia 2010, 23:12

Dziękuję, zaraz wypróbuję.
A masz może pomysł, jak przepisać zawartość Edit do ListBox, ale w taki sposób, by na przykład "02" było zapisane jako "02", a nie "2"?
Dokładniej to robię program dodający do podanej godziny po ileś minut ( stała ) i chciałbym, aby godziny i minuty ładnie się wyświetlały :)
Z góry dziękuję ponownie.
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
PodziÄ™kowaÅ‚ : 8
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z konwersjÄ…

Nowy postprzez Cyfrowy Baron » sobota, 21 sierpnia 2010, 09:13

KOD cpp:   •  UKRYJ  •
 int x = 2;
 Edit1->Text = IntToStr(2);
 String edit1 = FormatCurr("#00", Edit1->Text);
 ListBox1->Items->Add(edit1);

gdzie 2 = #0; 02 = #00; 002 lub 021 itp. = #000; itd...
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z konwersjÄ…

Nowy postprzez nvdante » sobota, 21 sierpnia 2010, 10:05

Hmm ... próbowałem to wprowadzić w moim programie, ale pojawił się dziwny dla mnie problem.
Otóż:

Kod: Zaznacz cały
for (int i=1; i<=Edit3->Text; i++)
      {
      if (b>59)
        {
        if (a>=23)
          {
          a=0;
          b=b-60;
          String edit1 = FormatCurr("#00", Edit1->Text);
          String edit2 = FormatCurr("#00", Edit2->Text);
          ListBox1->Items->Add(edit1+":"+edit2);
          b=b+25;
          }
          else
          {
          a=a+1;
          b=b-60;
          String edit1 = FormatCurr("#00", Edit1->Text);
          String edit2 = FormatCurr("#00", Edit2->Text);
          ListBox1->Items->Add(edit1+":"+edit2);
          b=b+25;
          }
        }
        else
        {
        String edit1 = FormatCurr("#00", Edit1->Text);
        String edit2 = FormatCurr("#00", Edit2->Text);
        ListBox1->Items->Add(edit1+":"+edit2);
        b=b+25;
        }
      }



Ten fragment kodu powoduje wyświetlanie na przykład ( w zależności od Edit3 ) 20 wyników identycznych, a nie powinien, bo za każdym razem dodaję 25 do zmiennej b.
Prawidłowe wyświetlanie daje:

Kod: Zaznacz cały
ListBox1->Items->Add(String(a)+":"+String(b));


Jakiś pomysł, gdzie popełniłem błąd?
Pozdrawiam
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
PodziÄ™kowaÅ‚ : 8
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z konwersjÄ…

Nowy postprzez MisticFrezer » sobota, 21 sierpnia 2010, 10:32

Rozumiem, że chcesz wypisać do ListBox'a rózne wartości a i b?
Otóż wpisujesz do Listbox'a nie a i b, lecz zawartość Editów, a te się nigdzie w pętli nie zmieniają.

Przykładowo (wycinek Twojego kodu)
Kod: Zaznacz cały
          a=0;
          b=b-60;
         Edit1->Text = (String)a; // !
         Edit2->Text = (String)b;

          String edit1 = FormatCurr("#00", Edit1->Text);
          String edit2 = FormatCurr("#00", Edit2->Text);
          ListBox1->Items->Add(edit1+":"+edit2);
          b=b+25;


Albo od razu
Kod: Zaznacz cały
          a=0;
          b=b-60;

          String edit1 = FormatCurr("#00", (String)a);
          String edit2 = FormatCurr("#00", (String)b);
          ListBox1->Items->Add(edit1+":"+edit2);
          b=b+25;


Ponadto czy jestes pewnien że to:
Kod: Zaznacz cały
for (int i=1; i<=Edit3->Text; i++)

będzie zawsze dobre i bezpieczne?
na twoim miejscu zrobiłbym tak:

Kod: Zaznacz cały
int cnt = 0;
try
{
  cnt = StrToInt(Edit3->Text);
}
catch(...)
{
//obsługa bledów gdyby ktoś wpisął w Edita np "żart" :)
}
for (int i=1; i<=cnt; i++)
{
// pętla
}

tak jest i szybciej i bezpieczniej. (nie zamieniasz każdorazowo stringa na liczbę.)
Avatar użytkownika
MisticFrezer
Bladawiec
Bladawiec
 
Posty: 23
Dołączył(a): wtorek, 23 lutego 2010, 23:57
Lokalizacja: Wrocław
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 4
System operacyjny: Windows XP Pro SP3, Windows 7 Pro
Kompilator: BCB6, RAD Studio 2010, VS 2010
Gadu Gadu: 0
    Windows XPOpera

Re: Problem z konwersjÄ…

Nowy postprzez nvdante » sobota, 21 sierpnia 2010, 11:03

Co do obsługi błędów w Editach za pewne masz rację, po prostu pominąłem to, gdyż program jest tylko do mojego użytku, ale faktycznie lepiej uczyć się od razu pisać prawidłowo :)
Natomiast odnośnie pozostałej części kodu to gapa ze mnie :p Przepraszam za to i bardzo dziękuję za pomoc wszystkim zaangażowanym w wątek :) Program działa świetnie.

Pozdrawiam
Liberae sunt nostrae cogitationes
Avatar użytkownika
nvdante
Intelektryk
Intelektryk
 
Posty: 188
Dołączył(a): piątek, 12 czerwca 2009, 16:58
Lokalizacja: Dom
PodziÄ™kowaÅ‚ : 8
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows 7
Kompilator: VS 2015
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z konwersjÄ…

Nowy postprzez Cyfrowy Baron » sobota, 21 sierpnia 2010, 13:53

MisticFrezer napisał(a):
KOD cpp:   •  UKRYJ  •
          String edit1 = FormatCurr("#00", (String)a);
          String edit2 = FormatCurr("#00", (String)b);


Funkcja FormatCurr akceptuje różne typy dlatego konwersja int na String jest zbędna, można po prostu tak:

KOD cpp:   •  UKRYJ  •
  String edit1 = FormatCurr("#00", a);
  String edit2 = FormatCurr("#00", b);
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości