Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Memo in Variable (https://www.delphipraxis.net/177795-memo-variable.html)

Luki206 27. Nov 2013 20:03

Memo in Variable
 
Hi,
ich möchte ein Memo in eine Variable 'packen' und diese dann nutzen damit ein anderes Memo mit dem Inhalt gefüllt wird. Ich habe es bis jetzt mit einer Schleife ausprobiert und das sieht so aus:
Delphi-Quellcode:
procedure TFrmHaupt.ActBuchenExecute(Sender: TObject);
var memo, weitergabe : String; i, j : Integer;
begin
 j := 0;
 for i := 10 downto 1 do begin
    memo := (Bestell.Lines[j]);
    ZuZahl.Lines[j] := (memo);
    j := j+1;
 end;
end;
Es funktioniert nicht wirklich und ich habe keine Lust die Memos erst als .txt zu speichern um sie dann im anderen Memo wieder zu laden..
Danke
Luki :)

Popov 27. Nov 2013 20:28

AW: Memo in Variable
 
Delphi-Quellcode:
var
  s: String;
begin
  s := Memo1.Lines.Text;
 
  Memo2.Lines.Text := s;
end;

Aviator 27. Nov 2013 20:29

AW: Memo in Variable
 
Wie wärs mit
Delphi-Quellcode:
ZuZahl.Text := Bestell.Text;
?
So wie du es im Moment machst, würden die Daten umgekehrt herum im anderen Memo erscheinen. Wenn es so sein soll, dann versuch es mit
Delphi-Quellcode:
ZuZahl.Lines.Add(memo);
. Dann brauchst du auch nicht deine Variable
Delphi-Quellcode:
j
und musst diese auch nicht hochzählen.

PS: Ich ignorier den Beitrag von Popov mal :D

himitsu 27. Nov 2013 20:38

AW: Memo in Variable
 
Ein ganzes Memo?
Du meinst NUR eine Zeile, also einen billigen String.

Delphi-Quellcode:
var s: string; // Variable in irgendwas umbenannt, da es ja kein Memo ist.

j := 0;
for i := 10 downto 1 do begin
  s := Bestell.Lines[j];
  ZuZahl.Lines[j] := s;
  j := j + 1;
end;

// aber warum nicht einfach umrechen?

for i := 10 downto 1 do begin
  s := Bestell.Lines[10 - i];
  ZuZahl.Lines[10 - i] := s;
end;

// aber warum wurde nicht direkt i verwendet?

for i := 0 to 9 do begin
  s := Bestell.Lines[i];
  ZuZahl.Lines[i] := s;
end;
So, grundsätzlich geht das, ABER, du hast schonwieder die Fehlerbeschreibung vergessen.

Und obwohl es mir schon was denken kann, was falsch ist:
- Was geht nicht?
- bzw. Wie geht es nicht? Was kommt raus und was erwartest du stattdessen?
- Gibt es Fehlermeldungen und wen ja, welche gibt es?
- Wenn es eine Exception gibt, welche Zeile gibt der Debugger an?

[edit]
Aber warum wurde nicht direkt i verwendet?
Hab bei dem Code nicht gleich voll durchgesehn und dachte wu willst die Reihenfolge der Zeilen umdrehen.

Die beste Lösung wurde zwar schon genannt
Delphi-Quellcode:
Memo1.Text := Memo2.Text;
oder
Delphi-Quellcode:
Memo1.Lines.Text := Memo2.Lines.Text;
Aber die zeilenweise Lösung wäre auch gegangen, wenn man es "richtig" macht.

Perlsau 27. Nov 2013 22:55

AW: Memo in Variable
 
@Luki206: Du möchtest doch nicht wirklich ein Memo in eine Variable packen, sondern dessen Inhalt. Der wird durch das Property Lines repräsentiert, und das ist im Großen & Ganzen eine Stringliste. Würdest du wirklich das komplette Memo mit all seinen Properties in einer Variablen speichern wollen, wäre das ein Objekt vom Typ TMemo. Um den Inhalt eines Memo zu speichern, ist es aber nicht notwendig, das gesamte Objekt TMemo zu speichern.

Mit anderen Worten: Der Kommunikation unter Programmierern liegt nicht nur die Alltagssprache zugrunde, sondern zu einem wesentlichen Teil die entsprechende Fachsprache, die es erfordert, Sprachübereinkünfte dieses Fachbereichs zu erlernen und zu übernehmen, um sich verständlich machen zu können.

Sir Rufo 27. Nov 2013 23:08

AW: Memo in Variable
 
@Perlsau

Evtl. ja doch ... mal wörtlich die Anforderung umgesetzt:
Delphi-Quellcode:
var
  LMemo : TMemo;
begin
  // Memo in Variable packen
  LMemo := Memo1;
  // nutzen um anderes Memo mit dem Inhalt füllen
  Memo2.Lines.Assign( LMemo.Lines );
  // alternativ geht auch
  Memo2.Lines := LMemo.Lines;
end;
es geht natürlich auch kürzer
Delphi-Quellcode:

Memo2.Lines := Memo1.Lines;
Wenn eh nur der Inhalt interessant ist, dann wäre auch denkbar
Delphi-Quellcode:
var
  LStrings : TStrings;
begin
  LStrings := TStringList.Create;
  try
    LStrings.Assign( Memo1.Lines );
    Memo2.Lines := LStrings;
  finally
    LStrings.Free;
  end;
end;
Das man der Eigenschaft Delphi-Referenz durchsuchenTMemo.Lines einfach etwas zuweisen (vom Typ Delphi-Referenz durchsuchenTStrings) kann, liegt am Setter
Delphi-Quellcode:
procedure TCustomMemo.SetLines( Value : TStrings );
begin
  FLines.Assign( Value );
end;

Luki206 28. Nov 2013 13:05

AW: Memo in Variable
 
Ok, ich danke euch ;) Es funktioniert jetzt :)

@Perlsau: Ich versuche das nächste mal ein wenig genauer meine Frage zu stellen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz