AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listenindex Überschreitet das Maximum (3)

Ein Thema von Demon666 · begonnen am 26. Jun 2010 · letzter Beitrag vom 27. Jun 2010
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: Listenindex Überschreitet das Maximum (3)

  Alt 26. Jun 2010, 20:41
Kann es an der save.txt liegen?
Delphi-Quellcode:
formoptionen.RGSymbol.ItemIndex:=strtoint(save[3]);
formoptionen.RGSymbolPosition.ItemIndex:=strtoint(save[4]);
Nachtrag: Du verwendest ausschließlich relative Pfade. Das ist sehr riskant, denn relative Pfade beziehen sich nicht auf dein Programmverzeichnis, sondern auf das aktuelle Arbeitsverzeichnis. Dieses ist häufig das Programmverzeichnis, aber nicht immer.

Wenn du aus deinem Programmverzeichnis Dateien öffnet möchtest, mache es so:
save.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'save.txt'); Das gleiche gilt für die Bitmaps.

Oder schreibe dir eine Funktion:
Delphi-Quellcode:
function AppPath: string;
begin
  Result := ExtractFilePath(ParamStr(0));
end;
und ermittle die absoluten Pfade wie folgt:
save.LoadFromFile(AppPath + 'save.txt');

Geändert von Matze (26. Jun 2010 um 20:50 Uhr)
  Mit Zitat antworten Zitat
Demon666

Registriert seit: 16. Jun 2010
21 Beiträge
 
Delphi 7 Personal
 
#2

AW: Listenindex Überschreitet das Maximum (3)

  Alt 26. Jun 2010, 20:55
Ok danke der fehler ist jetzt behoben... und ein neuer ist aufgetreten.
Beim Schließen des Programms bekomme ich die Meldung ..."Zugriffsverletzung bei Adresse 00460985"... mit verweis auf die zeile If Formoptionen.CBleiste.Checked=false then in der prozedur Darstellunganpassen
Simon
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Listenindex Überschreitet das Maximum (3)

  Alt 26. Jun 2010, 21:02
Vergleiche auf "true" und "false" sollten auch vermieden werden, speziell der auf "true" (s. hier).

Rufst du die Prozedur "DarstellungAnpassen" denn beim Beenden auf (OnClose o.ä.)?
Ich vermute, du greifst auf "Formoptionen" zu, was bereits freigegeben wurde.
  Mit Zitat antworten Zitat
Demon666

Registriert seit: 16. Jun 2010
21 Beiträge
 
Delphi 7 Personal
 
#4

AW: Listenindex Überschreitet das Maximum (3)

  Alt 26. Jun 2010, 21:25
Also beim schließen greif ich nicht dauf zu. Was meinst du mit "freigegeben"? (Bin Delphi neuling)
Simon
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Listenindex Überschreitet das Maximum (3)

  Alt 26. Jun 2010, 21:27
Beim Beenden gibt das Programm den reservierten Speicher frei, den es beansprucht hat. Dazu zählen auch Unterformulare.

Daher vermute ich, dass das Unterformular nicht mehr existiert, du aber beim Beenden darauf zugreifst.

Hast du denn etwas im OnClose oder OnCloseQuery stehen?
  Mit Zitat antworten Zitat
Demon666

Registriert seit: 16. Jun 2010
21 Beiträge
 
Delphi 7 Personal
 
#6

AW: Listenindex Überschreitet das Maximum (3)

  Alt 26. Jun 2010, 21:38
nein, aber ich hab ne prozedur in der FormOptionen geschlossen wird:
Delphi-Quellcode:
procedure TFormOptionen.BtOKClick(Sender: TObject);
var save: Tstringlist; //hier wird gespeichert. reihenfolge: checkbox, buttonhöhe,buttonbreite,Radiogroup"Symbol",RadioGroup"SymbolPosition";
begin
  save:=tstringlist.create;
  if cbleiste.checked then
    save.add('t')
  else
    save.Add('f'); //wenn die checkbox ein häckchen hat ist die erste zeile von save=t ansonsten ist sie f;


  if edbthoehe.text='then
     edbthoehe.value:=0;

  if edbtbreite.text='then
    edbtbreite.Value:=0;

  save.Add(inttostr(edbthoehe.Value)); //speicert die buttonhöhe;
  save.Add(inttostr(edbtbreite.value)); //speichert die buttonbreite;
  save.Add(inttostr(RGSymbol.ItemIndex));
  save.Add(inttostr(RGSymbolPosition.ItemIndex));
  save.SaveToFile('save.txt');
  FormOptionen.Close;
end;
Simon
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Listenindex Überschreitet das Maximum (3)

  Alt 26. Jun 2010, 21:44
Hm, also so kann ich dir leider nicht helfen, sorry.

Aber wo ich deinen Code nochmal ansehe, entstehen u.U. Speicherlecks (sog. Memory Leaks).
Du erzeugst eine StringList und gibst dessen Speicher nicht mehr frei.
Richtig macht man das so (bei allen Objekten, die du mit ".Create" erstellst):

Delphi-Quellcode:
save := TStringlist.Create;
try
  // hier dein Code, in dem du auf "save" zugreifst
finally
  // Speicher freigeben
  FreeAndNil(save); // oder: save.Free;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.533 Beiträge
 
Delphi 12 Athens
 
#8

AW: Listenindex Überschreitet das Maximum (3)

  Alt 27. Jun 2010, 06:40
Blos um das nochmal zu sagen.
Debuggen ist eine Wunderwaffe.
Damit bekommt man auch gleich mit raus in welcher Zeile der Fehler auftritt, was die Fehlersuche stark vereinfacht.
Ein Therapeut entspricht 1024 Gigapeut.
  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 07:04 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