Niekompatybilność między TWideStrings a String

Odpowiedz Nowy wątek
2018-10-30 13:26
m4s
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?

edytowany 3x, ostatnio: furious programming, 2018-10-30 13:31

Pozostało 580 znaków

2018-10-30 13:30
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?


Pozostało 580 znaków

2018-10-30 13:34
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?


edytowany 1x, ostatnio: furious programming, 2018-10-30 13:35

Pozostało 580 znaków

2018-10-30 13:47
m4s
0

Memo7.Memoto kontrolka tekstowa w trybie graficznym FastReport.
Memo7 nie posiada właściwości Texttylko 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 !!!!!!!

edytowany 6x, ostatnio: m4s, 2018-10-30 15:09

Pozostało 580 znaków

2018-10-30 15:09
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.


edytowany 1x, ostatnio: furious programming, 2018-10-30 15:15

Pozostało 580 znaków

2018-10-30 15:12
m4s
0

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

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

edytowany 1x, ostatnio: m4s, 2018-10-30 15:13

Pozostało 580 znaków

2018-10-30 15:14
2

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

Memo7.Text := Edit1.Text;

Pozostało 580 znaków

2019-02-21 09:51
m4s
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

edytowany 1x, ostatnio: m4s, 2019-02-21 10:05
pokaż kod. - Azarien 2019-02-21 11:25
W celu uzyskania pomocy proponuję założyć odpowiedni wątek bo obecny problem raczej nie ma nic wspólnego z "Niekompatybilność między TWideStrings a String" a z Twojego opisu również nie wiadomo o co chodzi. Jeśli próbujesz wpisać kilka linii to albo wprowadzaj to jako TStringList albo powinna być metoda Add, która dodaje poszczególne linie. - Clarc 2019-02-21 11:31

Pozostało 580 znaków

2019-02-21 11:47
m4s
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);
edytowany 3x, ostatnio: m4s, 2019-02-21 11:51
Tylko to nie przepisze tekst z Memo156, a doda tekst z Memo156 do Memo158. To taka drobna różnica... - wloochacz 2019-02-21 11:55
Memo158 jest puste i o to chodzi aby podmienić je z pola Memo158 - m4s 2019-02-21 12:06

Pozostało 580 znaków

2019-02-21 11:54
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;

Pozostało 580 znaków

2019-02-21 11:58
m4s
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 !

edytowany 2x, ostatnio: m4s, 2019-02-21 12:04

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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