Konwersja AnsiString do TStringList

dział ogólny

Konwersja AnsiString do TStringList

Nowy postprzez Miroo_007 » niedziela, 2 listopada 2008, 13:11

Jak przekonwertowaść zmienną AnsiString mającą znaczniki końca lini \n do TStringList tak aby uwzględniać te znaczniki?
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Konwersja AnsiString do TStringList

Nowy postprzez Cyfrowy Baron » niedziela, 2 listopada 2008, 13:30

AnsiString to zmienną przechowująca pojedynczy element, a TStringList to lista zawierająca wiele elementów TStringList, nie można dokonać konwersji z AnsiString na AnsiString, tutaj konwersji jest niepotrzebna.
Przypuszczam, że chodzi Tobie raczej o to jak wrzucić na listę TStringList wartość zmiennej AnsiString zawierającej znaki \n
Otwórz można umieścić w takiej zmiennej dwie kreski ułamkowe odwrócone, wtedy na liście znajdzie się tylko jedna kreska. Kreska ułamkowa oznacza, ze chcesz uwzględniać jakieś znaki specjalne, dlatego możesz to zrobić tak:

Kod: Zaznacz cały
  AnsiString tekst = "jakiÅ› tekst\\n"; // dwie kreski
  Lista->Add(tekst);   


To czasami może nie wystarczy, gdy np. zmienna z jakichś powodów nie może zawierać dwóch ukośników, wtedy można dokonać przed wrzuceniem na listę zamiany znaków poprzez dodanie dodatkowej kreski, ale nie do zmiennej, czyli zawartość zmiennej się nie zmienia, lecz do samej listy:

Kod: Zaznacz cały
AnsiString tekst = "jakiÅ› tekst\n"; // pojedyncza kreska
String result = StringReplace(tekst, "\n", "\\n", TReplaceFlags() << rfReplaceAll); // tutaj następuje zamiana znaku \n na \\n
Lista->Add(result);
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
    NieznanyNieznana

Re: Konwersja AnsiString do TStringList

Nowy postprzez Miroo_007 » niedziela, 2 listopada 2008, 13:40

Chyba źle określiłem swój problem. Wgrywając zmienną AnsiString do TStringList nie uwzględnia mi znaków końca linii \n. Chcę aby każdy wiersz w mojej w liście był zakończony znakiem końca linii. Aktualnie tak nie jest. Pokazywane są na liście znaki końca linii ale one nie tworzą nowego wiersza.
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana

Re: Konwersja AnsiString do TStringList

Nowy postprzez Cyfrowy Baron » niedziela, 2 listopada 2008, 13:53

Znów opisujesz problem w sposób niezrozumiały, czy chodzi Tobie o to, że wczytujesz jakąś zmienną typu AnsiString zawierającą nie tyle całe zdanie ile kilka zdań z łamaniem wiersz. Jeżeli tak, to wymaga to zastosowania bardzo złożonego kodu, czyli czegoś w rodzaju tego co zaprezentowałem w dziale: TRichEdit & Memo -> Zapisywanie zawartości Memo do pliku *.ini
Znajdziesz tam funkcje AnsiString StrToIniStr(const AnsiString Str) i String IniStrToStr(const String Str) dokonujące rakich psełdo konwersji.
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
    NieznanyNieznana

Re: Konwersja AnsiString do TStringList

Nowy postprzez Miroo_007 » niedziela, 2 listopada 2008, 14:01

Właśnie oto mi chodziło. Wielkie dzięki.
Avatar użytkownika
Miroo_007
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): sobota, 18 października 2008, 10:49
Lokalizacja: Rzeszów
PodziÄ™kowaÅ‚ : 0
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    NieznanyNieznana


  • 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 6 gości