![]() |
Memo den Wert eines TStrings-Datenfeld zuweisen
Hi!
Wie der Titel schon sagt, möchte ich, dass ein Memofeld den Wert eines TStrings-Bezeichners annimmt. Doch es kommt nach dieser Zeile: Memo1.Lines.AddStrings(MemoInhalt[ListBox1.ItemIndex]); Immer der Fehler EAccessViolation. Ich hab vorher mit dem jeiweiligen Array: MemoInhalt[i].Free gemacht. Was ist nun falsch? Danke für eure Unterstützung! PAX |
Hallo und herzlich Willkommen im Forum!
Du sagst doch selbst das Du alles vorher mit MemoInhalt[i].Free freigibst, ja wo soll denn da noch ein Inhalt sein? Du bekommst den Fehler weil Du auf Daten/Einträge zugreifst, die es nicht mehr gibt. Und was Bitte meinst Du mit Arrays? Grüsse, Daniel :hi: |
Jo, aber selbst wenn ich dem Tstrings-Bezeichner einen Inhalt gebe, kommt der Fehler! Was meinst du damit, dass Daten/Einträge nicht mehr existieren? Ich will, dass das TMemo1 den Inhalt eines tstrings-Bezeichners erhält, was muss ich also tun? Wenn der Bezeichner ***.Free gemacht wurde, ja dann soll das Memo eben in diesem Fall keinen Inhalt haben, aber das is ne andere Sache. Erklär mir einfach (am Beispiel) was ich anders machen muss.
Ein Array is ein Datenfeld. Es wird so deklariert: Var Bezeichner: Array[0..10] of TStrings; Dann muss ich nicht dies tun (is nähmlich das selbe): var Bezeichner0,Bezeichner1,Bezeichner2,..,Bezeichner1 0: TStrings; Ich kann dann so auf jede einzelne Variable zugreifen: Bezeichner[0] := ...; Bezeichner[1] := ...; Bezeichner[2] := ...; ... Bezeichner[10] := ...; Ok, dann helft mir bitte. PAX |
Hallo Pax,
die Inhalte kannst Du mit Memo1.Items.Assign(Bezeichner[I]); wobei I ein Zahl zwischen 0..10 ist, zuweisen. Du solltest aber dafür Sorge tragen, daß auch deine TStrings im Array gültige Objekte sind. Du mußt sie also voher erzeugen, da du ja nur 11 Zeiger auf Objekte des Typs TStrings hast.
Delphi-Quellcode:
Jetzt hast Du gültige Objekte in die Du was verstauen kannst und die Du zuweisen kannst.
for I := 0 to High(Bezeichner) do
begin Bezeichner[I] = TStringList.Create; end; bye |
Ok, ich hab nun mit allen TStrings-Bezeichnern dies gemacht:
:coder: Bezeichner.Create; Und danach: Memo1.Lines.Assign(MemoInhalt[ListBox1.ItemIndex]); Darauf kam die Meldung: EAbstractError :freak: Was ist jetzt los? PAX |
Hallo,
zeig dochmal etwas mehr Code, evtl. die ganze Prozedur. Dann könnte man evtl. mehr erkennen. Grüsse, Daniel :hi: |
Delphi-Quellcode:
Das isses!
procedure TForm1.FormShow(Sender: TObject);
Var i: Cardinal; begin For i := 1 To 1000 Do begin MemoInhalt[i] := TStrings.Create; end; end; procedure TForm1.ListBox1Click(Sender: TObject); begin // MemoInhalt[ListBox1.ItemIndex].Clear; // MemoInhalt[ListBox1.ItemIndex].Add('Nix drin'); // Memo1.Free; // Memo1.Lines.Assign(MemoInhalt[ListBox1.ItemIndex]); Memo1.Lines.Assign(MemoInhalt[1]); // Memo1.Lines.AddStrings(MemoInhalt[ListBox1.ItemIndex]); end; PAX |
Ich habs!
Statt
Delphi-Quellcode:
muss dort
tstrings.create;
Delphi-Quellcode:
hin!
TStringList.Create;
Danke an euch! PAX |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz