Niekompatybilność między TWideStrings a String

0

W sumie temat wyczerpuje wszystkie niezbędne informacje.

przykład - chcę zamienić Memo7.Memo (TWdiseStrings) na Edit1.text

Wpisując w kodzie Memo7.Memo:=Edit1.Text

otrzymuję komunikat:

niezgodne typy: 'TWideStrings' , 'String'

Jak to ugryźć, czy jest to wykonalne?

2

Memo7.Memo zawiera listę ciągów znaków, podczas gdy Edit1.Text jest pojedynczym ciągiem znaków - stąd niekompatybilność.

Jednym z możliwych wyjść jest zatem np. dopisanie linijki na koniec listy:

Memo7.Memo.Add(Edit1.Text);

Jakiego zachowania oczekujesz?

1

Jeśli tekst z Memo ma być zastąpiony tym z Edit, to Memo też posiada właściwość Text, z której należy skorzystać.

Memo7.Memo – co to za konstrukcja?

0

Memo7.Memo to kontrolka tekstowa w trybie graficznym FastReport.
Memo7 nie posiada właściwości Text tylko właściwość Memo

Dopisałem:

Memo7.Memo.Add(Edit1.Text);

Wykasowałem wszystkie teksty w Memo7.Memo

i jest efekt taki jaki powinien być - zwraca prawidłowo wartość z Edit1.Text

@furious programming
Dzięki za podpowiedź !!!

to ... działa Memo7.Text:=Edit1.Text

Wielkie dzięki wam obu !!!!!!!

1

Moment, bo o ile obie nasze propozycje pozwolą przepisać tekst z Edit do Memo, to działają nieco inaczej.

@Patryk27 zaproponował mtodę Memo.Memo.Add, która dodaje linijkę na koniec listy. Jeśli kontrolka zawierała wcześniej jakiś tekst, to ten z Edit zostanie dodany na koniec. Ja natomiast zasugerowałem użycie właściwości Memo.Text – przypisanie do niej tekstu spowoduje skasowanie całej zawartości komponentu Memo, a następnie dodanie do pustej listy linijki z Edit.

Oba sposoby możesz wykorzystać. Wszystko zależy od tego, czy chcesz aby zawartość Memo była wstępnie kasowana czy nie.

0

Tak ma być kasowana, bo interesuje mnie tylko zawartość Edit1.Text

Jeszcze raz dziękuję za dogłębne wyjaśnienie tematu !

2

I wszystko jasne. W takim razie poniższa linijka jest odpowiednia:

Memo7.Text := Edit1.Text;
0

Tym razem próbuję ugryźć:

TfrxMemoControl ma swoją zawartość wpisać do TfrxMemoView

Oczywiście kończy się to komunikatem

Niezgodne typy: 'String' ,'TStrings' 

Dlaczego TfrxMemoControl ? Potrzebuję dodać tekst wpisywany w kilku linijkach

Pytanie czy jest to możliwe?

Czy też muszę zmienić konstrukcję na TfrxEditControl ? I tak dla tych kilku linijek ?

Uzyskałem tu wcześniej pomoc, może uda się ponownie ?

Pzdr

0

Pole Wpisz własnego przewoźnika
https://ibb.co/fXdmyC2

Tak aby był widoczne na wydruku
https://ibb.co/RQTpVW3

Memo158.Memo.Add(Memo156.Lines);
1
m4s napisał(a):

Tym razem próbuję ugryźć:

Lepiej zacznij gryzienie dokumentacji, ponieważ wykładasz się na podstawach.

TfrxMemoControl ma swoją zawartość wpisać do TfrxMemoView

Oczywiście kończy się to komunikatem

Niezgodne typy: 'String' ,'TStrings' 

Brak Ci podstaw, a wydawało się, że już zrozumiałeś dlaczego.
A tu klops - dalej ciemność...

Dlaczego TfrxMemoControl ? Potrzebuję dodać tekst wpisywany w kilku linijkach
Pytanie czy jest to możliwe?

Oczywiście, że jest możliwe.

Czy też muszę zmienić konstrukcję na TfrxEditControl ? I tak dla tych kilku linijek ?

Nie.

Uzyskałem tu wcześniej pomoc, może uda się ponownie ?

Może...
Zakładając, że TfrxMemoView nazywa się Memo1, a TfrxMemoControl nazywa się ctrlMemo1, to aby przepisać tekst z obiektu ctrlMemo1 do Memo1, należy napisać kod:

Memo1.Text := ctrlMemo1.Lines.Text;
0

Masz absolutną rację, Gdyby to byłoby moje stałe źródło dochodu - to zacząłbym od podstaw.
Nie neguję że brak mi podstaw.
Niestety z mojej strony jest to łapanie po omacku, dostałem raporty w spadku - jak dasz radę to dasz jak nie to nie.
Wrodzony pęd ku samo-destrukcji z walką z kodem postanowił że zrobię to choćby naokoło...
Gdyby nie można było , to użyłbym kilku linii z polami Edit.
Przetestuję i sprawdzę, dzięki !

0

Kapitalnie, zadziałało !

Dziękuje bardzo @wloochacz za pomoc.

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