AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TStringList erzeugt access violation...
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList erzeugt access violation...

Ein Thema von user0815 · begonnen am 20. Nov 2013 · letzter Beitrag vom 20. Nov 2013
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#1

TStringList erzeugt access violation...

  Alt 20. Nov 2013, 13:36
Ich verstehe nichts mehr....

Habe ein neues Projekt erstellt, drücke ich auf den Button erscheint die Meldung "ok".

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    SendeListe : TStringList;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if SendeListe.Count > 0
   then ShowMessage('falsch')
    else ShowMessage('ok')
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if SendeListe <> nil
   then SendeListe.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SendeListe := TStringList.Create;
end;
In einem anderen Projekt habe ich ähnliches. Hier erhalte ich allerdings eine Exception die ich nicht verstehe.
Ich habe hier mal den Code auf den Button wo es passiert verkürzt:

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    SendeListe : TStringList;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  SendeListe := TStringList.Create;

  if SendeListe.Count > 0
   then ShowMessage('falsch')
    else ShowMessage('ok')
end;
sobald ich auf den Button drücke erhalte ich bei Zeile: "if SendeListe.Count > 0" eine Exception.

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt SoUndSo.exe ist eine Exception der Klasse $C0000005 mit der Meldung 'access violation at 0x00700bfd: read of address 0x02000041' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

Der Debugger spuckt über dem "count" als Meldung "Ungültiger Ausdruck im Evaluator" aus.

Gibt es irgendwelche Projektdateien die man löschen kann damit dieser nicht vorhandene Fehler verschwindet.
Neustart: Delphi, Rechner hat nichts gebracht.
Ich verstehe leider nichts mehr.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 13:41
Und wenn Du den Code so wie er ist mal in einem neuen Projekt einfügst? Ich sehe keinen Fehler (nur ein Speicherleck) und kann das unter XE auch nicht nachvollziehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 13:44
Heißt in diesem Projekt evtl. noch irgendetwas anderes SendeListe, eine Variable, eine Function, eine Procedure, eine Unit?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#4

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 13:50
Delphi-Quellcode:
  SendeListe := TStringList.Create;
  SendeListe.Clear;
füge ich die Clear Zeile ein, dann kommt die Exception nicht.

Heißt in diesem Projekt evtl. noch irgendetwas anderes SendeListe, eine Variable, eine Function, eine Procedure, eine Unit?
STRG + UMSCH + F: Nein (hatte ich bereits geprüft)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 13:55
Wenn du mit der Maus auf TStringList fährst, wird dir angezeigt aus welcher unit diese ist (müsste classes sein). Ebenso bei SendeListe mal überprüfen.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#6

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 14:07
es ist die: "System.Classes.TStringList"

Ich werde die Form jetzt mal aus dem Projekt schmeissen & alles neu einfügen, mal schauen...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 14:17
Im Debuger oder einer Messagebox mal Pointer(SendeListe) ausgeben, also direkt nach dem Erstellen der Stringliste
und dann vor dem Zugriff nochmal.

Stehen da die selben Werte drin?
Es kann natürlich noch sein, daß du im Programm z.B. einen Buffer-Overrun hast und dir diese Variable zerstörst.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 14:18
Hallo,

bevor du das machst: Schau mal nach, ob das FOrmular ggf. 2x erzeugt wird, einmal automatisch beim Start, einmal von dir manuell erzeugt. Da habe ich schon die tollsten Fehlermeldungen bei Kollegen gesehen

Grüße
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 14:27
BTW, SendeListe.Free gehört eigentlich nach FormDestroy.
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#10

AW: TStringList erzeugt access violation...

  Alt 20. Nov 2013, 15:04
Arrrrggghhhhhhhh

der Fehler lag ganz woanders.
Ich habe einen Record erstellt und einer Variablen den Record zugewiesen. Hierbei habe ich mit Konstanten gearbeitet und durch die Codevervollständigung (irgendjemand muss ja Schuld haben) die falsche genommen.

Delphi-Quellcode:
const
  MaxWert = 10;
  MaxWertEinheiten = 20;

type
  TRecordXYZ = Record
    a : Integer;
  end;

var
ABC : array[1..MaxWert] of TRecordXYZ;
//statt
ABC : array[1..MaxWertEinheiten] of TRecordXYZ;
Später habe ich dann auf einen Wert gegriffen den es nicht gibt - ABC[11] ...
Trotz allem erschien die Fehlermeldung bei der Stringlist, die aber in diesem Fall nichts damit zu tun hatte.

Danke für´s gucken!
Sollte vielleicht öfter mal ne Pause machen...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 15:45 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