CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Problem ze Stringiem

Problem ze Stringiem

dział ogólny

Problem ze Stringiem

Nowy postprzez Pitek » wtorek, 28 grudnia 2010, 20:50

Witam!
Mam następujący problem :
KOD cpp:     UKRYJ  
RichEdit1->Lines->Add("         local."+ModelName+" model "static/"+ModelName+".tik");

Mam coś takiego i kompilator kłóci się o ten static a jest on częścią tego stringa jak to zrobić żeby nie był on brany osobno pod uwagę ale jako część stringa ?
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Problem ze Stringiem

Nowy postprzez Corvis » wtorek, 28 grudnia 2010, 22:24

KOD cpp:     UKRYJ  
        RichEdit1->Lines->Add("         local." + ModelName + " model static " + ModelName + ".tik");


O to ci chodzi ?
"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 VistaChrome

Re: Problem ze Stringiem

Nowy postprzez Pitek » wtorek, 28 grudnia 2010, 22:28

Nie, musi być przykładowo tak :
KOD cpp:     UKRYJ  
local.corona_util model "static/corona_util.tik"
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Problem ze Stringiem

Nowy postprzez Corvis » wtorek, 28 grudnia 2010, 22:36

Tak jak napiałeś ma ci napisać w RichEdit tak ??


KOD cpp:     UKRYJ  
String nazwa = Edit1->Text;
Memo1->Lines->Add("         local." + nazwa + " model \"static/" + nazwa + ".tik\"");
 
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House

Za ten post autor Corvis otrzymał podziękowanie od:
Pitek
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 VistaChrome

Re: Problem ze Stringiem

Nowy postprzez Pitek » wtorek, 4 stycznia 2011, 22:06

Nie zaczynając kolejnego tematu bo miałby on taką samą nazwę.
Pytanie brzmi jak zrealizować taki kod :
KOD cpp:     UKRYJ  
//---------------------------------------------------------------------------
void __fastcall TForm6::LabeledEdit1Change(TObject *Sender)
{
if(LabeledEdit1->Text.Pos(".") > 0)
{
int i = LabeledEdit1->Text.Pos(".");
LabeledEdit1->Text[i] = ",";
}
}
//---------------------------------------------------------------------------

Błąd jaki się wyświetla to :

[BCC32 Error] Unit1.cpp(118): E2034 Cannot convert 'const char *' to 'wchar_t'
Full parser context
Unit1.cpp(114): parsing: void _fastcall TForm6::LabeledEdit1Change(TObject *)

Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Problem ze Stringiem

Nowy postprzez Corvis » wtorek, 4 stycznia 2011, 22:17

Nie mam kompilatora ale chodzi chyba o to:

KOD cpp:     UKRYJ  
LabeledEdit1->Text[i] = ",";
 


Zamień cudzysłów na "ciapek" - ' czyli:

KOD cpp:     UKRYJ  
LabeledEdit1->Text[i] = ',';
 
"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 VistaChrome

Re: Problem ze Stringiem

Nowy postprzez Cyfrowy Baron » wtorek, 4 stycznia 2011, 22:43

Ponieważ używasz środowiska C++Builder 2010 to typem domyślnym nie jest już AnsiString lecz UnicodeString, a to wymaga zastosowania innych operatorów konwersji. Opisałem to szczegółowo w tym poście: http://www.programowanie.cal.pl/forum/viewtopic.php?f=16&t=1098&p=7401&#p7401
Co się tyczy problemu to występuje on tutaj:

KOD cpp:     UKRYJ  
LabeledEdit1->Text[i]

We wcześniejszych wersjach można chyba było traktować ciąg znaków typu AnsiSting jak tablicę, ale w nowszych wersjach środowiska to się już zmieniło, tablica musi być jasno zdefiniowana.
Twój kod powinien wyglądać tak:

KOD cpp:     UKRYJ  
 if(LabeledEdit1->Text.Pos(".") > 0)
 {
  int i = LabeledEdit1->Text.Pos(".");

  LabeledEdit1->Text = LabeledEdit1->Text.Delete(i, 1);

  LabeledEdit1->Text = LabeledEdit1->Text.Insert(",", i);
 }
Istnieje jednak prostsza metoda:

KOD cpp:     UKRYJ  
 LabeledEdit1->Text = StringReplace(LabeledEdit1->Text, ".", ",", TReplaceFlags() << rfReplaceAll);


Funkcja StringReplace zamieni wszystkie wystąpienia jednego znaku na inny.



Co się tyczy odpowiedzi Corvis'a to w ten sposób unikniesz tylko komunikatu błędu i nic poza tym. Właściwość Text jest typu UnicodeString a nie char, czy wchar_t więc to nie zadziała.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Pitek
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 ze Stringiem

Nowy postprzez Pitek » wtorek, 4 stycznia 2011, 22:53

Bardzo dziękuję za odpowiedź! Działa ale po takim poprawieniu kursor w danym okienku przeskakuje mi na początek jak to zmienić aby pozostał na miejscy w chwili pisania czyli na końcu wpisywanego tekstu?
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Ubuntu 19.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    Windows XPFirefox

Re: Problem ze Stringiem

Nowy postprzez Cyfrowy Baron » wtorek, 4 stycznia 2011, 22:59

KOD cpp:     UKRYJ  
 LabeledEdit1->Text = StringReplace(LabeledEdit1->Text, ".", ",", TReplaceFlags() << rfReplaceAll);
 int length = LabeledEdit1->Text.Length();
 LabeledEdit1->Perform(EM_SETSEL, length, length);
 LabeledEdit1->SetFocus(); // <-- to opcjonalnie, czyni obiekt aktywnym

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Pitek
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


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