Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi urgh? Lesen Von Adresse 00000000 error bei... ??? (https://www.delphipraxis.net/11474-urgh-lesen-von-adresse-00000000-error-bei.html)

Skyruner2 7. Nov 2003 14:29


urgh? Lesen Von Adresse 00000000 error bei... ???
 
hi
Ich habe keine ahrnung warum ich diesen error habe....
Hier ist das exception fenster
nach dem error springt der de-bugger Hier hin

und der code (der macht noch net fiel)
error bei: button2click
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
openDialog1.Execute;
edit3.text:=opendialog1.FileName;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  filedata, datacontent : tStringlist;
  databegin, dataend :integer;
begin
If openDialog1.Filename = ''
then showmessage('no file loaded dumbass')
else
  begin
    try
      filedata.Create;
      try
        filedata.LoadFromFile(opendialog1.FileName);
      except
        on E: Exception do
          begin
            showmessage(e.Message);
          end;
      end;

      databegin:=filedata.IndexOf(edit1.Text);
      dataend:=filedata.IndexOf(edit2.Text);

    finally
      FreeAndNil(filedata);
      FreeAndNil(datacontent);
    end;
  end;
end;
hab ich wieder was falsch geschrieben??
wenn ich den error ignorire, un das programm weiterlaufen lasse, ist die gleich message in der showmessage nachricht.... also muss es an:
filedata.LoadFromFile(opendialog1.FileName);
liegen

ist auch wenn ich dass file zB in ein memo feld lade.

Nalincah 7. Nov 2003 14:34

Re: urgh? Lesen Von Adresse 00000000 error bei... ???
 
Delphi-Quellcode:
filedata.Create
= FALSCH
Delphi-Quellcode:
filedate := TStringList.Create;
= RICHTIG

und nicht

Delphi-Quellcode:
var
  filedate:TStringList;
sondern

Delphi-Quellcode:
var
  filedate:TStrings;

Nalincah 7. Nov 2003 14:36

Re: urgh? Lesen Von Adresse 00000000 error bei... ???
 
Würd das auch nicht so schreiben:

Delphi-Quellcode:
If openDialog1.Filename = ''
then showmessage('no file loaded dumbass')
else
  begin
    try
      filedata.Create;
      try
        filedata.LoadFromFile(opendialog1.FileName);
      except
        on E: Exception do
          begin
            showmessage(e.Message);
          end;
      end;

      databegin:=filedata.IndexOf(edit1.Text);
      dataend:=filedata.IndexOf(edit2.Text);

    finally
      FreeAndNil(filedata);
      FreeAndNil(datacontent);
    end;
  end;
Sonder so:

Delphi-Quellcode:
If openDialog1.Filename = '' then
begin
  showmessage('no file loaded dumbass');
end else
begin
  try
    filedata := TStringList.Create;
    try
      filedata.LoadFromFile(opendialog1.FileName);
    except
      on e : exception do
        showmessage(e.Message);
    end;
    databegin := filedata.IndexOf(edit1.Text);
    dataend := filedata.IndexOf(edit2.Text);
  finally
    filedate.free;
  end;
end;
So ist doch übersichtlicher, oder nicht?

Ausserdem, wofür brauchst du das "datacontent"??

Skyruner2 7. Nov 2003 14:38

Re: urgh? Lesen Von Adresse 00000000 error bei... ???
 
hmm.. kein error mehr :thuimb:

aber warum? :gruebel:

was ist denn der unterschied von Tstringlist und Tstrings??

Nalincah 7. Nov 2003 14:40

Re: urgh? Lesen Von Adresse 00000000 error bei... ???
 
Dein Fehler war das erstellen des Objektes:

wenn du ne StringList machen willst

dann so

Delphi-Quellcode:
var
  Liste:TStrings;
begin
  Liste := TStringList.Create;
  try
    // Code
  finally
    Liste.free;
  end;
end;

Luckie 7. Nov 2003 14:41

Re: urgh? Lesen Von Adresse 00000000 error bei... ???
 
Irgendwie hats du die try-finally, try except Blöcke komisch geschachtelt.
Delphi-Quellcode:
sl := TStringlist.Create;
try
  sl. ...;
  try
    sl.LoadfromFile(...);
  except
    ...;
  end;
finally
  sl.Free;
end;
Wobei ich auf den Except Block verzichten würde und mit FileExist prüfen würde, ob die Datei vorhanden ist. Nutz man allerdings einen Opendialog ist das überflüssig, weil man ihn so einstellen kann, dass er nur existierende Dateien akzeptiert.

Skyruner2 7. Nov 2003 14:43

Re: urgh? Lesen Von Adresse 00000000 error bei... ???
 
Zitat:

Zitat von Luckie
Irgendwie hats du die try-finally, try except Blöcke komisch geschachtelt.
Delphi-Quellcode:
sl := TStringlist.Create;
try
  sl. ...;
  try
    sl.LoadfromFile(...);
  except
    ...;
  end;
finally
  sl.Free;
end;
Wobei ich auf den Except Block verzichten würde und mit FileExist prüfen würde, ob die Datei vorhanden ist. Nutz man allerdings einen Opendialog ist das überflüssig, weil man ihn so einstellen kann, dass er nur existierende Dateien akzeptiert.

war auch nur für de-bugging gedacht ;)

Nalincah 7. Nov 2003 14:43

Re: urgh? Lesen Von Adresse 00000000 error bei... ???
 
Entweder so:

Delphi-Quellcode:
If FileExists(opendialog1.filename) then
  memo1.lines.loadfromfile(opendialog1.filename);
oder

Delphi-Quellcode:
if opendialog1.execute then
  memo1.lines.loadfromfile(opendialog1.filename);
Beim ersten wird das nur gemacht wenn die datei vorhanden ist
und beim zweiten wird das nur gemacht wenn im opendialog auf "Öffnen" geklickt wird. Und das geht nur wenn die datei vorhanden ist

Minz 7. Nov 2003 14:46

Re: urgh? Lesen Von Adresse 00000000 error bei... ???
 
Bei TStrings handelt es sich lediglich um eine Klasse, die zwar Methoden angemeldet hat aber diese nicht selber implementiert -> abstrakte Basisklasse. (siehe Online-Hilfe)

TStringList ist ein Abkömmling von TStrings und implementiert die Methoden und Eigenschaften.

Gruß Minz

Nalincah 7. Nov 2003 14:47

Re: urgh? Lesen Von Adresse 00000000 error bei... ???
 
Cool..So genau wusst ich das auch noch nicht


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Seite 1 von 2  1 2      

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