Niekompatybilność między TWideStrings a String

Niekompatybilność między TWideStrings a String
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 lata
  • 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?

edytowany 3x, ostatnio: flowCRANE
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • 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
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około godziny
  • Lokalizacja:Tuchów
  • Postów:12175
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?


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 lata
  • 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 !!!!!!!

edytowany 6x, ostatnio: m4s
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około godziny
  • Lokalizacja:Tuchów
  • Postów:12175
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.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 lata
  • 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 !

edytowany 1x, ostatnio: m4s
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około godziny
  • Lokalizacja:Tuchów
  • Postów:12175
2

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

Kopiuj
Memo7.Text := Edit1.Text;

Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 lata
  • 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

edytowany 1x, ostatnio: m4s
CL
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.
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 lata
  • 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);
edytowany 3x, ostatnio: m4s
WL
Tylko to nie przepisze tekst z Memo156, a doda tekst z Memo156 do Memo158. To taka drobna różnica...
m4s
Memo158 jest puste i o to chodzi aby podmienić je z pola Memo158
WL
  • Rejestracja:ponad 21 lat
  • Ostatnio:22 dni
  • Postów:1083
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:ponad 8 lat
  • Ostatnio:około 4 lata
  • 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 !

edytowany 2x, ostatnio: m4s
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 lata
  • 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.