AGB  ·  Datenschutz  ·  Impressum  







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

Ungültige Zeigeroperation

Ein Thema von Fallenzer · begonnen am 31. Dez 2019 · letzter Beitrag vom 1. Jan 2020
Antwort Antwort
Fallenzer

Registriert seit: 3. Aug 2019
Ort: Wernigerode, Sachsen-Anhalt, DE
29 Beiträge
 
Delphi 10.3 Rio
 
#1

Ungültige Zeigeroperation

  Alt 31. Dez 2019, 18:11
Hallo und guten Tag,

bei einer Prozedur ist folgender Fehler aufgetreten: UNGÜLTIGE ZEIGEROPERATION

Delphi-Quellcode:
var
  Form4: TForm4;
sl,sk:tstringlist; sessio: integer;
implementation
  uses Unit1, unit3;
{$R *.dfm}
{...}
procedure TForm4.Button1Click(Sender: TObject);
begin
  sl.LoadFromFile('.\Market\info.txt');
sk.Loadfromfile('.\Market\lastsession.txt');
sl.Add('');
sl.Add('Einkauf-Nr.: ' + sk.strings[0]);
sl.add('');
sl.Add('Produkte:');
sl.add('');
sl.Addstrings(Form1.Listbox2.Items);
sl.add('');
sl.add('Total: ' + Floattostrf(priz, ffcurrency, 4, 2));
sl.Add('Give: ' + Floattostrf(money, ffcurrency, 4, 2));
sl.Add('Back: ' + Floattostrf(money-priz, ffcurrency, 4, 2));
sl.Add('');
sl.Add('Vielen Dank f�r Ihren Einkauf!!!');
sl.Add('');
sessio:=(Strtoint(sk.strings[0])+1);
sk.free;
sk.add(inttostr(sessio));
sl.SaveToFile('.\Market\Bon\' + sk.strings[0] + '.txt');
sk.savetofile('.\Market\lastsession.txt');
sl.Free;
sk.free;
end;
Ich würde mich auf eure Hilfe freuen. Vielen Dank
Danilo Bleul (existiert seit 2005)
  Mit Zitat antworten Zitat
striderx

Registriert seit: 11. Feb 2007
Ort: Bergisch Gladbach
206 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Ungültige Zeigeroperation

  Alt 31. Dez 2019, 18:20
wie wäre es mit

Delphi-Quellcode:
SL := tStringList.Create;
SK := tStringList.Create;
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#3

AW: Ungültige Zeigeroperation

  Alt 31. Dez 2019, 18:29
weil heut Silvester: (und die Antwort zuvor mit deinen Zeilen leider immer noch nicht funktioniert)

Tip 1:
erzeuge selbst keine globalen Variablen (sl,sk:tstringlist; sessio: integer

Tip 2:
gehe ALLE mitgelieferten VCL-Beispiele von Delphi durch und suche dir da etwas, was deiner "GUI" und deiner "Funktion" am nächsten kommt

Tip 3:
- lerne den Unterschied in der Benutzung zwischen stets dynamischen Objekten (...:T???) und staiischen Typen(...:integer)
- denke sehr intensiv über das von dir wohl derzeit zufällig hingeschriebene ".Free" nach, und erkenne was alles fehlt und wo das fehlende hingehört

Tip 4:
es gibt sowas wie Debugger, womit du einzen Zeile für Zeile abarbeiten kannst... dann weißt du erstens wo ein erstmalig Fehler auftritt(heißt nicht, dass das/dort die Ursache ist)

Geändert von mensch72 (31. Dez 2019 um 18:32 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.018 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Ungültige Zeigeroperation

  Alt 31. Dez 2019, 20:39
weil heut Silvester: (und die Antwort zuvor mit deinen Zeilen leider immer noch nicht funktioniert)

Tip 1:
erzeuge selbst keine globalen Variablen (sl,sk:tstringlist; sessio: integer
Zusatz: Globale Variablen sind Variablen, die weder Teil einer Klasse (dort nennt man sie Felder) noch einer Methode sind (lokale Variablen).
Wie mensch72 sagt, sollte man auf globale Variablen verzichten.

Noch ein Zusatz: try..finally..end.

Tip 3:
- lerne den Unterschied in der Benutzung zwischen stets dynamischen Objekten (...:T???) und staiischen Typen(...:integer)
Das ist gemein, weil auch Records mit T beginnen, aber deren Speicher automatisch verwaltet wird, weshalb Records keinen Destruktor haben. Und zu allem Überfluss haben Aufzählungen (unterscheiden sich von Zahlen nur theoretisch) und Mengen auch ein T am Anfang.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#5

AW: Ungültige Zeigeroperation

  Alt 31. Dez 2019, 21:10
..."Das ist gemein, weil auch Records mit T beginnen"...
=> das ist nicht gemein, sondern zielführend lehrreich!... denn es bedeutet: wenns mit T??? beginnt IMMER Hirn einschalten und bewußt NACHDENKEN!

Auf dem (Einstiegs)Level reicht völlig die Erkenntnis, das man anfangs wie auch künftig NUR "string" oder "integer" in Delphi einfach so nutzen kann
Jetzt schon auf Details und Besonderheiten von SETS,RECORDS,ARRAYS einzugehen, halte ich in Anbedracht des Source schlicht für verfrüht.




...2020...
HappyNewYear
  Mit Zitat antworten Zitat
Fallenzer

Registriert seit: 3. Aug 2019
Ort: Wernigerode, Sachsen-Anhalt, DE
29 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Ungültige Zeigeroperation

  Alt 1. Jan 2020, 09:12
Danke für eure Tipps...

Ich werde es mit TMemo versuchen...
Danilo Bleul (existiert seit 2005)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#7

AW: Ungültige Zeigeroperation

  Alt 1. Jan 2020, 09:34
Vielleicht erklärst du uns mal, was du machen willst. Ob ein Memo besser ist, als die Stringlisten?

Was mir noch aufgefallen ist:

sl.Add('Einkauf-Nr.: ' + sk.strings[0]); Wenn nun sk leer ist, weil es die Liste nicht gibt? Du solltest erst einmal prüfen, ob es die zu ladende Datei gibt. Dann noch prüfen, ob es den Index[0] auch gibt.
Das oben erwähnte try except würde hier auch Infos geben, wie auch das Debuggen mittels Debugger.

sessio:=(Strtoint(sk.strings[0])+1); Hier nun die Frage, ob sk.strings[0] überhaupt eine Zahl ist. Ansonsten fliegt dir das Programm auch um die Ohren. Ein TryStrToInt wäre hier hilfreich.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Ungültige Zeigeroperation

  Alt 1. Jan 2020, 13:06
[QUOTE=Fallenzer;1454199]
Delphi-Quellcode:
sk.free;
sk.add(inttostr(sessio));
Das ist eher sinnfrei!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 18:10 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