AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Memo den Wert eines TStrings-Datenfeld zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Memo den Wert eines TStrings-Datenfeld zuweisen

Ein Thema von PAX · begonnen am 22. Jun 2003 · letzter Beitrag vom 22. Jun 2003
Antwort Antwort
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#1

Memo den Wert eines TStrings-Datenfeld zuweisen

  Alt 22. Jun 2003, 11:37
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
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 22. Jun 2003, 11:59
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
  Mit Zitat antworten Zitat
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#3
  Alt 22. Jun 2003, 14:29
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
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#4
  Alt 22. Jun 2003, 14:41
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:
for I := 0 to High(Bezeichner) do
begin
  Bezeichner[I] = TStringList.Create;
end;
Jetzt hast Du gültige Objekte in die Du was verstauen kannst und die Du zuweisen kannst.
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#5
  Alt 22. Jun 2003, 14:55
Ok, ich hab nun mit allen TStrings-Bezeichnern dies gemacht:

Bezeichner.Create;

Und danach:

Memo1.Lines.Assign(MemoInhalt[ListBox1.ItemIndex]);

Darauf kam die Meldung:

EAbstractError

Was ist jetzt los?

PAX
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#6
  Alt 22. Jun 2003, 14:57
Hallo,

zeig dochmal etwas mehr Code, evtl. die ganze Prozedur. Dann könnte man evtl. mehr erkennen.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#7
  Alt 22. Jun 2003, 15:00
Delphi-Quellcode:
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;
Das isses!

PAX
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat
Benutzerbild von PAX
PAX

Registriert seit: 22. Jun 2003
Ort: Karlsruhe
88 Beiträge
 
Delphi 7 Personal
 
#8
  Alt 22. Jun 2003, 15:09
Ich habs!

Statt
tstrings.create; muss dort
TStringList.Create; hin!


Danke an euch!
PAX
Andreas
"Wenn man irgendwann mal von allen akzeptiert wird, dann weiß man, dass man irgendwas falsch gemacht hat." Zitat: Herr Weidner

  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 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