Niekompatybilność między TWideStrings a String

Niekompatybilność między TWideStrings a String
m4s
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
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:

Kopiuj
niezgodne typy: 'TWideStrings' , 'String'

Jak to ugryźć, czy jest to wykonalne?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
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:

Kopiuj
Memo7.Memo.Add(Edit1.Text);

Jakiego zachowania oczekujesz?

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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?

m4s
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
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:

Kopiuj
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 !!!!!!!

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
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.

m4s
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
0

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

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

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
2

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

Kopiuj
Memo7.Text := Edit1.Text;
m4s
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
0

Tym razem próbuję ugryźć:

TfrxMemoControl ma swoją zawartość wpisać do TfrxMemoView

Oczywiście kończy się to komunikatem

Kopiuj
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

m4s
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
0

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

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

Kopiuj
Memo158.Memo.Add(Memo156.Lines);
WL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1084
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

Kopiuj
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:

Kopiuj
Memo1.Text := ctrlMemo1.Lines.Text;
m4s
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
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 !

m4s
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 63
0

Kapitalnie, zadziałało !

Dziękuje bardzo @wloochacz za pomoc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.