Konwersja TString na String

0

Mam problem , wyciągam z RichEdit linię zaznaczoną
przy pomocy:
linia:= RichEdit1.SelText
ale otrzymuję w TString a potrzebuję String, nie wiem jak to zrobić

0

Że co? Przecież taki kod działa:

var
  Line : string;
begin
  Line := RichEdit1.SelText;
  ShowMessage(Line);
end;

Poza tym umieszczanie takich samych postów w różnych działach nie uczyni z Ciebie zajebistego programisty, a i w zrozumieniu podstaw języka również nie pomoże. Najlepiej poczytać kompendium na stronie 4p, a jak coś będzie nie tak podczas wysyłana posta to możesz go usunąć, co już zrobiłem w dziale Delphi, ale taka moja rada na przyszłość: o podstawy pytaj w dziale Newbie.

0

Nie cuduj, nie ma czegoś takiego, jak TString jest co najwyżej TStrings.

0

Tak wszystko w terii gra , tylko że jak próbuję nawet linię załadować do Memo czy z niby tego łańcucha odciąć kawałek przy pomocy Delete , otrzymuję komunukat o różnicy klas. Umieszczenie tego w miejscach nie wynika z pychy tylo z rozpaczy bo walę głową w mur teorii , która za cholerę nie chce zgodzić się z praktyką.Pracuję na Delphi 7 Enterprise. Bardzo proszę o pomoc.

0

marudzisz. nawet nie podajesz kodu ani jaki błąd dostajesz.

0
bycho56 napisał(a)

wyciągam z RichEdit linię zaznaczoną
przy pomocy:
linia:= RichEdit1.SelText
ale otrzymuję w TString a potrzebuję String

  1. Uważaj, bo SelText zwraca właśnie tekst (oczywiście jako zwykły typ string). Jeżeli SelText obejmował kilka linii w RichEdit, to w tym stringu znajdą się również znaki końca wierszy.
  2. Nikt nie słyszał o jakimś TString.
bycho56 napisał(a)

jak próbuję (...) z niby tego łańcucha odciąć kawałek przy pomocy Delete

Napisz System.Delete.

0

Dziękuję za wszystkie uszczypliwości, widzę że to jest forum dla ludzi lubiących się pośmiać z innych a nie lubiących pomagać
podaję kawałek kodu

with RichEdit1 do
begin
SelStart := FindText('SCF Done:' , 0 , GetTextLen,[stWholeWord]) ;
SelLength := 70;
SelAttributes.color:=clBlue;

end;
Label5.Caption := RichEdit1.SelText ;
linia := RichEdit1.SelText;
Eneria:=delete(linia, 20, 20 );

błąd
incompatible types : 'String' and 'procedure, untypes pointer or untyped parameter'

0
Eneria:=delete(linia, 20, 20 ); //Co to jest?

EDIT// żeby nie było że nie lubimy pomagać to przeanalizuj ten kod to zobaczysz jak działa Delete

var
  tekst: string;
begin
  tekst:= 'Test';
  Delete(tekst, 2, 2);  //tekst, od ktorego znaku, ile znaków
  ShowMessage(tekst);
end;
0

Kazek, autor pewno nie wie, że tak nie można, więc postaram się trochę wyjaśnić.

Błąd jest w ostatniej linii kodu. Po prawej stronie instrukcji przypisania może się znajdować jakaś wartość, stała, zmienna albo funkcja. Funkcja oblicza i udostępnia jakąś wartość, którą to wartość można podstawić pod zmienną znajdującą się po lewej stronie instrukcji przypisania.
Przykład z użyciem **funkcji ** Concat:

var 
  Wyraz1, Wyraz2, Wyraz3, Zdanie: string;
Wyraz1:= 'Ala ';
Wyraz2:= 'ma ';
Wyraz3:= 'kota.';
Zdanie:= Concat(Wyraz1, Wyraz2, Wyraz3);

Delete to jest procedura i nie może znajdować się po prawej stronie instrukcji przypisania, bo procedura nie udostępnia żadnej wartości. Ten problem można rozwiązać w następujący sposób:

Label5.Caption:= RichEdit1.SelText;
linia:= RichEdit1.SelText;
Delete(linia, 20, 20);
Eneria:= linia;

Poczytaj czym si różni wywołanie procedury i funkcji i wszystko się wyjaśni.

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