AGB  ·  Datenschutz  ·  Impressum  







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

Object und Fail

Ein Thema von MacGuyver · begonnen am 2. Feb 2010 · letzter Beitrag vom 4. Feb 2010
 
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#1

Object und Fail

  Alt 2. Feb 2010, 19:31
Moin Leute

Ich stelle gerade mein Programm von Turbo Pascal 7.0 auf Turbo Delphi um. Das Programm läuft dann als Console. Bei über 100.000 Zeilen kann ich nicht mal eben eine reine Formularanwendung draus machen. Als 32 Bit Console läuft das Teil dann auch auf XP 64 Bit, was einer 16 Bit Anwendung verwährt wird.

Komme ich zu meinem Problem.

Delphi-Quellcode:
type
  TDirInfo = object
    DirInfo : SearchRec;

    constructor Create( aDatei : PathStr;
                        aAttr : Word);

    function FindNext:Boolean;

    destructor Free;
  end;
  
constructor TDirInfo.Create( aDatei : PathStr;
                             aAttr : Word);
{$IfDef Win32}
var
  lEc : Int32;
{$EndIf}

begin
{$IfDef Win32}
  lEc := FindFirst(aDatei,aAttr,DirInfo);
  if lEc <> 0 then
  begin
    SysUtils.FindClose(DirInfo);
    Fail;
  end;
{$Else}
  FindFirst(aDatei,aAttr,DirInfo);
  if DosError <> 0 then
  begin
    { FindClose wird bei Dos nicht benötigt }
    Fail;
  end;
{$EndIf}
end;

function TDirInfo.FindNext:Boolean;

{$IfDef Win32}
var
  lEc : Int32;
{$EndIf}

begin
{$IfDef Win32}
  lEc := SysUtils.FindNext(DirInfo);
  FindNext := lEc = 0;
{$Else}
  Dos.FindNext(DirInfo);
  FindNext := DosError = 0;
{$EndIf}
end;

destructor TDirInfo.Free;

begin
{$IfDef Win32}
  SysUtils.FindClose(DirInfo);
{$EndIf}
end;
Wenn FindFirst keine Datei liefert, wird Fail aufgerufen. In dem Moment zerlegt sich mein Stack und ein folgender FillChar auf eine Variable von Record führt zum Speicherfehler.

Ich könnte wie folgt umstellen:

Delphi-Quellcode:
type
  TDirInfo = object
    DirInfo : SearchRec;

    constructor Create;

    function FindFirst( aDatei : PathStr;
                           aAttr : Word):Boolean;

    function FindNext:Boolean;

    destructor Free;
  end;
Leider muss ich dann 38 Stellen in meinem Programm umstellen. Dazu kommen dann noch ein paar Objekte, die auch mit Fail enden, wenn eine Datei nicht geöffnet werden kann, etc. und das sind noch viel mehr Stellen.

Meine Frage: Kommt das wirklich vom Fail? Hat jemand von euch schon Erfahrungen damit gesammelt?



Stefan
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
 


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 05:09 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 by Thomas Breitkreuz