AGB  ·  Datenschutz  ·  Impressum  







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

AccessViolation mit Checkbox aber warum?

Ein Thema von lucius · begonnen am 9. Dez 2005 · letzter Beitrag vom 9. Dez 2005
Antwort Antwort
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#1

Re: AccessViolation mit Checkbox aber warum?

  Alt 9. Dez 2005, 11:34
oh Mann .. du kostest mich Nerven

slLines ist eine lokale Variable und wird nur im If-Zweig erstellt. Daher kannst du nur im IF-Zweig unbeschadtet auf dieses Objekt zugreifen. Wenn du es im Else-Teil tust, kommt eine AV.

Und meine angedeutete Warnung ist eine, die vom Compiler kommt. Nicht vom Exception-Handling.

Die einfachste und sicherste Lösung ist folgende:
Delphi-Quellcode:
procedure THaupt.KidsClick(Sender: TObject);
var
z, i : Integer;
slLines, slFields, FieldList : TStringList;
begin
  try
    slLines := TStringList.Create; //<--- Vor dem If erzeugen
    if Kids.Checked = false then
      begin
        slFields := TStringList.Create;
        
          for z := ListView.Items.Count-1 downto 0 do
            if ListView.Items[z].SubItems[1] = 'TV - Kidsthen
              begin
                slFields.Assign(Listview.Items[z].SubItems);
                slFields.Insert(0, Listview.Items[z].Caption);
                slLines.Add(slFields.CommaText);
                ListView.Items[z].Delete;
              end;
          Listview.Invalidate;
          showmessage(slLines.CommaText);
      end
      else
      begin
        FieldList := TStringList.Create;
          for i := 0 to Pred(slLines.Count) do //<--- Und hier unbeschadet verwenden
            begin
              FieldList.CommaText := slLines[i];
                with ListView.Items.Add do
                  begin
                    Caption := FieldList[0];
                    FieldList.Delete(0);
                    SubItems.Assign(FieldList);
                  end;
            end;
    
      
      slFields.Free;
      FieldList.Free;
      end;
    end;
  finally
    slLines.Free; //<--- und in jedem Falle freigeben
  end;
end;
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  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:01 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