AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi wie kann ich bestimmte Infos aus Textdokument einlesen?

wie kann ich bestimmte Infos aus Textdokument einlesen?

Ein Thema von Boyington · begonnen am 21. Mai 2012 · letzter Beitrag vom 6. Jun 2012
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Boyington
Boyington

Registriert seit: 12. Apr 2012
43 Beiträge
 
#1

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 28. Mai 2012, 13:08
Hallo Klaus,
ich hab dein Programm vereinfacht, aber es funktioniert einfach nicht (die *.exe Datei kann nicht mehr geschlossen werden nach der Durchführung), es scheint, dass Fehler irgendwo aufgetreten sind (wegen unendlicher Schleife???).

Code:
type
   TVektor = record
     x, y, z: real;
   end;
   TDreieck = record
     n: TVektor; // n ist Normalvektor
     p: array[1..3] of TVektor; //p hat Koordinaten von 3 Eckpunkten
   end;
Var
   Dreiecke:Array of TDreieck;


function ReadNumber(const s:string; var i:integer):real;
var
j:integer;
begin
j:=i;
while s[j]<>' ' do dec(j);
 result:=StrToFloat(Copy(s,j+1,i-j));
while s[j]=' ' do dec(j);
 i:=j;
end;

procedure TForm1.Button2Click(Sender: TObject);
const
  s1='facet normal';
  s2='vertex';
  s3='endsolid';

var
  s:string;
  //i:integer;
  j:integer;
  L:integer;
  List:TStrings;
  Line:integer;
  data:TDreieck;

begin
   Dreiecke:=nil;
   List:=TStringList.Create;
   List.LoadFromFile(OpenDialog1.FileName);
   Line:=1;

   while (Copy(Trim(List[Line]),1,Length(s3))<>s3) do
   begin
    s:=Trim(List[Line]);
    L:=Length(s);

    if (Copy(s,1,Length(s1))=s1) then
      begin
       data.n.z:=ReadNumber(s,L);
       data.n.y:=ReadNumber(s,L);
       data.n.x:=ReadNumber(s,L);
       inc(Line);

       while (Copy(s,1,Length(s2))<>s2) do inc(Line);
         for j:=1 to 3 do begin
          data.p[j].z:=ReadNumber(s,L);
          data.p[j].y:=ReadNumber(s,L);
          data.p[j].x:=ReadNumber(s,L);
          inc(line);
         end;

       SetLength(Dreiecke,Length(Dreiecke)+1);
       Dreiecke[High(dreiecke)]:=data;
      end

       else inc(Line);
    end;
end;
könntest du vielleicht für mich die Fehler mal suchen und dann korrigieren?
Vielen Dank!

lg
Lee
Do the best job, leave the rest in the hands of God!

Geändert von Boyington (28. Mai 2012 um 13:14 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#2

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 28. Mai 2012, 21:51
Hallo Klaus,
ich hab dein Programm vereinfacht, aber es funktioniert einfach nicht (die *.exe Datei kann nicht mehr geschlossen werden nach der Durchführung), es scheint, dass Fehler irgendwo aufgetreten sind (wegen unendlicher Schleife???).

Code:
type
   TVektor = record
     x, y, z: real;
   end;
   TDreieck = record
     n: TVektor; // n ist Normalvektor
     p: array[1..3] of TVektor; //p hat Koordinaten von 3 Eckpunkten
   end;
Var
   Dreiecke:Array of TDreieck;


function ReadNumber(const s:string; var i:integer):real;
var
j:integer;
begin
j:=i;
while s[j]<>' ' do dec(j);
 result:=StrToFloat(Copy(s,j+1,i-j));
while s[j]=' ' do dec(j);
 i:=j;
end;

procedure TForm1.Button2Click(Sender: TObject);
const
  s1='facet normal';
  s2='vertex';
  s3='endsolid';

var
  s:string;
  //i:integer;
  j:integer;
  L:integer;
  List:TStrings;
  Line:integer;
  data:TDreieck;

begin
   Dreiecke:=nil;
   List:=TStringList.Create;
   List.LoadFromFile(OpenDialog1.FileName);
   Line:=1;

   while (Copy(Trim(List[Line]),1,Length(s3))<>s3) do
   begin
    s:=Trim(List[Line]);
    L:=Length(s);

    if (Copy(s,1,Length(s1))=s1) then
      begin
       data.n.z:=ReadNumber(s,L);
       data.n.y:=ReadNumber(s,L);
       data.n.x:=ReadNumber(s,L);
       inc(Line);

       while (Copy(s,1,Length(s2))<>s2) do inc(Line);
         for j:=1 to 3 do begin
          data.p[j].z:=ReadNumber(s,L);
          data.p[j].y:=ReadNumber(s,L);
          data.p[j].x:=ReadNumber(s,L);
          inc(line);
         end;

       SetLength(Dreiecke,Length(Dreiecke)+1);
       Dreiecke[High(dreiecke)]:=data;
      end

       else inc(Line);
    end;
end;
könntest du vielleicht für mich die Fehler mal suchen und dann korrigieren?
Vielen Dank!

lg
Lee
Hallo Lee,
eigentlich verspüre ich keine große Lust den Korrektor zu spielen, wenn jemand, dem ich einen perfekt funktionierenden
Code lieferte, diesen vermeintlich "vereinfacht" und in nicht funktionierenden Code umwandelt.
Hab's mir trotzdem mal angeschaut, und ohne viel zu suchen tippe ich darauf dass das Programm in der Zeile while (Copy(s,1,Length(s2))<>s2) do inc(Line); festhängt.
Warum ?!
Weil du zwar korrekt den Zeilenzähler erhöhst, aber die neue Zeile nicht in s stellst.
In der Zeile while (Copy(s,1,Length(s2))<>s2) do inc(Line); prüfst du gegen s und das enthält "facet normal ...."
Also wird "vertex" nicht gefunden, und wenn du dann noch die Überlaufprüfung abgeschaltet hast ....

Was mir noch auffiel:
Du gibst List nicht frei.
Du sprachst in einem der Beiträge von 10000 Dreiecken.
Für 1 Dreieck werden ca. 270 Chars gebraucht für 10000 Dreiecke also 2.7 MB (oder 5.4 MB bei WideChars).
Irgendwann kriegst du dann eine Out of Memory Exception.

Das von mir gewählte Konstrukt sorgt dafür, dass
1) list immer freigegeben wird
2) Dreiecke auf nil gesetzt wird, wenn ein Fehler auftritt.
Deine "Vereinfachung" sorgt für
1) unsicheren Code
2) Memory Leaks

Denk mal darüber nach, ob solch eine Vereinfachung wirklich sinnvoll ist.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Boyington
Boyington

Registriert seit: 12. Apr 2012
43 Beiträge
 
#3

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 29. Mai 2012, 00:11
[QUOTE=Amateurprofi;1168431]
Hallo Lee,
eigentlich verspüre ich keine große Lust den Korrektor zu spielen, wenn jemand, dem ich einen perfekt funktionierenden
Code lieferte, diesen vermeintlich "vereinfacht" und in nicht funktionierenden Code umwandelt.
Hab's mir trotzdem mal angeschaut, und ohne viel zu suchen tippe ich darauf dass das Programm in der Zeile while (Copy(s,1,Length(s2))<>s2) do inc(Line); festhängt.
Warum ?!
Weil du zwar korrekt den Zeilenzähler erhöhst, aber die neue Zeile nicht in s stellst.
In der Zeile while (Copy(s,1,Length(s2))<>s2) do inc(Line); prüfst du gegen s und das enthält "facet normal ...."
Also wird "vertex" nicht gefunden, und wenn du dann noch die Überlaufprüfung abgeschaltet hast ....

Was mir noch auffiel:
Du gibst List nicht frei.
Du sprachst in einem der Beiträge von 10000 Dreiecken.
Für 1 Dreieck werden ca. 270 Chars gebraucht für 10000 Dreiecke also 2.7 MB (oder 5.4 MB bei WideChars).
Irgendwann kriegst du dann eine Out of Memory Exception.

Das von mir gewählte Konstrukt sorgt dafür, dass
1) list immer freigegeben wird
2) Dreiecke auf nil gesetzt wird, wenn ein Fehler auftritt.
Deine "Vereinfachung" sorgt für
1) unsicheren Code
2) Memory Leaks

Denk mal darüber nach, ob solch eine Vereinfachung wirklich sinnvoll ist.
vielen Dank für die sehr ausführlichen Antwort und Hinweise, Klaus.
Ich hab dein erstes Programm (stl-Datei einlesen) gerade probiert, aber leider hab ich folgende Fehlermeldungen bekommen.


http://www.delphipraxis.net/attachme...1&d=1338246528

http://www.delphipraxis.net/attachme...1&d=1338246528

Wegen Fehlermeldung von "PROCEDURE TMain.Test;" (in erstem Bild) hab ich folgende code, die eigentlich zu Procedure TMain.Test gehört, in "procedure TForm1.Button2Click(Sender: TObject);" geschrieben.

const
recstart='facet normal';
recline='vertex';
var list:TStrings; line:integer; data:TDreieck;

Dann hab ich das Programm wieder durchgeführt durch Drücken von Button2 "Koordinaten der STL einlesen", bekomme ich zweite Fehlermeldung (in 2. Bild)
Angehängte Grafiken
Dateityp: jpg 001.jpg (174,5 KB, 19x aufgerufen)
Dateityp: jpg 002.jpg (63,6 KB, 18x aufgerufen)
Do the best job, leave the rest in the hands of God!

Geändert von Boyington (29. Mai 2012 um 00:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Boyington
Boyington

Registriert seit: 12. Apr 2012
43 Beiträge
 
#4

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 29. Mai 2012, 00:28
Folgende ist mein Programm (code von dir gemacht), durch Drücken von Button2 werden STL-Datei eingelesen, und durch Drücken von Button3 wird die Liste in Log.txt gespeichert.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, GLScene, GLMisc, GLVectorFileObjects, GLWin32Viewer, GLFileSTL,
  Menus, ComCtrls, StdCtrls, ExtCtrls, GLTexture, GLObjects, GLHUDObjects;

type
    TVektor = record
    x, y, z: real;
    end;

    TDreieck = record
    n: TVektor;
    p: array[1..3] of TVektor;
    end;
.
.
.
Var
  Form1: TForm1;
  Dreiecke:array of TDreieck;
.
.
.
//PROCEDURE TMain.Test; <--bekomme ich Fehlermeldun

FUNCTION FindLine(const s:string; raiseerr:boolean):boolean;
var
  line:integer;
  list:TStrings;
begin
   while (line<list.count) and (Copy(Trim(list[line]),1,Length(s))<>s) do inc(line);
   if line<list.count then result:=true
      else if not raiseerr then result:=false
         else raise Exception.Create(s+' nicht gefunden.');
end;


FUNCTION ReadNumber(const s:string; var i:integer):real;
var j:integer;
begin
   j:=i;
   while s[j]<>' do dec(j);
   result:=StrToFloat(Copy(s,j+1,i-j));
   while s[j]=' do dec(j);
   i:=j;
end;


PROCEDURE ReadLine(var v:TVektor);
var s:string; i:integer; list:TStrings; line:integer;
begin
   s:=Trim(list[line]);
   i:=Length(s);
   v.z:=ReadNumber(s,i);
   v.y:=ReadNumber(s,i);
   v.x:=ReadNumber(s,i);
   inc(line);
end;


PROCEDURE ReadRecord;
const recline='vertex';
var i:integer; data:TDreieck;
begin
   ReadLine(data.n);
   for i:=1 to 3 do begin
      FindLine(recline,true);
      ReadLine(data.p[i]);
   end;
   SetLength(Dreiecke,Length(Dreiecke)+1);
   Dreiecke[High(dreiecke)]:=data;
end;


// var f:TextFile; i,j:integer; // nur zur Kontrolle benutzt

PROCEDURE CopyDreiecke(tofile:boolean);
var list:TStrings;

FUNCTION ToStr(v:real):String;
begin
   result:=FloatToStrF(v,ffExponent,7,3)+' ';
   if result[1]<>'-then result:=' '+result;
end;

PROCEDURE AddVector(const v:TVektor);
type TxVector=Array[0..2] of real;

var s:string; i:integer; list:TStrings;
begin
   for i:=0 to High(TxVector) do s:=s+ToStr(TxVector(v)[i]);
   list.Add(s);
end;

var i,j:integer;
begin
   list:=TStringList.Create;
   try
      try
         if Length(Dreiecke)=0 then
            raise Exception.Create('Dreiecke ist leer.');
         for i:=0 to High(Dreiecke) do
            with Dreiecke[i] do begin
               AddVector(n);
               for j:=Low(p) to High(p) do AddVector(p[j]);
               list.Add('');
            end;
         if tofile then list.SaveToFile(ExtractFilePath(ParamStr(0))+'Log.txt');
           //else Clipboard.AsText:=List.Text;
         ShowMessage('fertig.');
      except
         On E:Exception do ShowMessage(E.Message);
      end;
   finally
      list.free;
   end;
end;



procedure TForm1.Button3Click(Sender: TObject);
begin
CopyDreiecke(true);
end;

procedure TForm1.Button2Click(Sender: TObject);
const
   recstart='facet normal';
   recline='vertex';
var list:TStrings; line:integer; data:TDreieck;
begin
   Dreiecke:=nil;
   list:=TStringList.Create;
   try
      try
         //list.text:=Clipboard.AsText;
         List.LoadFromFile(OpenDialog1.FileName);
         line:=0;
         while FindLine(recstart,false) do ReadRecord;
      except
         On E:Exception do begin
            ShowMessage(E.Message);
            Dreiecke:=nil;
         end;
      end;
   finally
      list.free;
   end;
end;

end.
Do the best job, leave the rest in the hands of God!

Geändert von Boyington (29. Mai 2012 um 00:33 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#5

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 29. Mai 2012, 16:54
Hallo Lee,

natürlich kriegst du eine Fehlermeldung, wenn du in einer Form namens "Form1" eine Prozedur hast, die "TMain.Test" heißt.

Benenne sie um in TForm1.Test oder nenne sie TForm1.Button2Click und alles wird gut.

Zur Access Violation.
Na klar kommt die.

Du hast das ja alles so schön vereinfacht und die Funktionen, die ursprünglich innerhalb von "Test" lagen, ausgelagert.

Dann hast du warscheinlich eine Fehlermeldung "list unbekannt" oder so erhalten und zur Abhilfe in den ausgelagerten Funktionen list noch einmal deklariert.
So funktioniert das halt nicht.

Mein Tipp:
Höre auf mit deinen Verschlimmbesserungen.
Nimm die Prozedur "TMain.Test", benenne sie um in "TForm1.Button2Click", und dann wird das funktionieren.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Boyington
Boyington

Registriert seit: 12. Apr 2012
43 Beiträge
 
#6

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 31. Mai 2012, 20:19
Hallo Lee,

natürlich kriegst du eine Fehlermeldung, wenn du in einer Form namens "Form1" eine Prozedur hast, die "TMain.Test" heißt.

Benenne sie um in TForm1.Test oder nenne sie TForm1.Button2Click und alles wird gut.

Zur Access Violation.
Na klar kommt die.

Du hast das ja alles so schön vereinfacht und die Funktionen, die ursprünglich innerhalb von "Test" lagen, ausgelagert.

Dann hast du warscheinlich eine Fehlermeldung "list unbekannt" oder so erhalten und zur Abhilfe in den ausgelagerten Funktionen list noch einmal deklariert.
So funktioniert das halt nicht.

Mein Tipp:
Höre auf mit deinen Verschlimmbesserungen.
Nimm die Prozedur "TMain.Test", benenne sie um in "TForm1.Button2Click", und dann wird das funktionieren.
Guten Abend Klaus,
heute funktioniert nicht nur dein original Programm bei mir perfekt, sondern auch meine eigne "Verschlimmbessserung"

Nochmals vielen Dank für deine nette Hilfe!

Gruss
Lee
Do the best job, leave the rest in the hands of God!
  Mit Zitat antworten Zitat
Benutzerbild von Boyington
Boyington

Registriert seit: 12. Apr 2012
43 Beiträge
 
#7

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 2. Jun 2012, 08:15
Guten Morgen alle,
ich hab wieder ne Frage:
wie kann ich eine dynamische Array (hier z.B Dreiecke: array of TDreieck) in TList umwandeln?
Also alle gerade eingelesenen Koordinaten sollen in TList gespeichert werden, damit kann ich später eine vorhandene Funktion (z.B function Abstand(var MinAbstand: real; Messpos, Blick: TVektor; hList: TList): integer; ) verwenden.

Danke dafür!

Gruss
Lee
Do the best job, leave the rest in the hands of God!

Geändert von Boyington ( 2. Jun 2012 um 08:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 2. Jun 2012, 16:03
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type

  TVektor = record
    x, y, z: real;
  end;
  TDreieck = Class
    n: TVektor; // n ist Normalvektor
    p: array[1..3] of TVektor; //p hat Koordinaten von 3 Eckpunkten
  end;

  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    FList:TList;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
 i:Integer;
 d:TDreieck;
begin
    FList:=TList.Create;
    for I := 0 to 10 do
       begin
          d :=TDreieck.Create;
          d.n.x := Random(100);
          d.n.y := i;
          FList.Add(d);
       end;
    Showmessage(FloatToStr(TDreieck(Flist[5]).n.y));
    for I := Flist.Count-1 to 0 do TDreieck(Flist[i]).Free;
    FList.Free;

end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Boyington
Boyington

Registriert seit: 12. Apr 2012
43 Beiträge
 
#9

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 4. Jun 2012, 23:08
Guten Abend Leute und danke für die Codes, Bummi.
Um Parameter "Dreiecke" (array of TDreieck) von dynamischem Array in Typ von "TList" umzuwandeln, habe ich original code von Klaus wie folgendes umgeschrieben:

Delphi-Quellcode:
type
   TVektor = record
     x, y, z: real;
   end;
   TDreieck = record
     n: TVektor; // n ist Normalvektor
     p: array[1..3] of TVektor; //p hat Koordinaten von 3 Eckpunkten
   end;
Var
   hDreieck:^TDreieck; //von mir zugefügt!!!
   //Dreiecke:Array of TDreieck;
   Dreiecke: TList; //von mir zugefügt!!!

PROCEDURE TMain.Test;
const
   recstart='facet normal';
   recline='vertex';
var list:TStrings; line:integer; data:TDreieck;

FUNCTION FindLine(const s:string; raiseerr:boolean):boolean;
begin
   while (line<list.count) and (Copy(Trim(list[line]),1,Length(s))<>s) do inc(line);
   if line<list.count then result:=true
      else if not raiseerr then result:=false
         else raise Exception.Create(s+' nicht gefunden.');
end;

FUNCTION ReadNumber(const s:string; var i:integer):real;
var j:integer;
begin
   j:=i;
   while s[j]<>' do dec(j);
   result:=StrToFloat(Copy(s,j+1,i-j));
   while s[j]=' do dec(j);
   i:=j;
end;

PROCEDURE ReadLine(var v:TVektor);
var s:string; i:integer;
begin
   s:=Trim(list[line]);
   i:=Length(s);
   v.z:=ReadNumber(s,i);
   v.y:=ReadNumber(s,i);
   v.x:=ReadNumber(s,i);
   inc(line);
end;

PROCEDURE ReadRecord;
var i:integer;
begin
   //ReadLine(data.n);
   ReadLine(hDreieck^.n); //von mir zugefügt!!!
   for i:=1 to 3 do begin
      FindLine(recline,true);
      //ReadLine(data.p[i]);
      ReadLine(hDreieck^.p[i]); //von mir zugefügt!!!
   end;
   //SetLength(Dreiecke,Length(Dreiecke)+1);
   //Dreiecke[High(dreiecke)]:=data;
   Dreiecke.Add(hDreieck); //von mir zugefügt!!!
end;

// var f:TextFile; i,j:integer; // nur zur Kontrolle benutzt
begin
   //Dreiecke:=nil; //von mir gelöscht
   list:=TStringList.Create;
   try
      try
         list.text:=Clipboard.AsText;
         // oder List.LoadFromFile('Filename');
         line:=0;
         while FindLine(recstart,false) do ReadRecord;
      except
         On E:Exception do begin
            ShowMessage(E.Message);
            //Dreiecke:=nil; //von mir gelöscht
         end;
      end;
   finally
      list.free;
   end;
end;
Ich bin nicht sicher, ob das Programm richtig ist, und evtl. s.g "Memory Leaks" vorhanden ist, weil the Codes der Ausgabe in Log.txt ich noch nicht umgeschrieben habe und auch nicht probieren kann.

Ich bin sehr dankbar für weitere Hilfe und nützliche Hinweise

Gruss
Lee
Do the best job, leave the rest in the hands of God!

Geändert von Boyington ( 5. Jun 2012 um 05:33 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#10

AW: wie kann ich bestimmte Infos aus Textdokument einlesen?

  Alt 5. Jun 2012, 00:36
Hallo Lee,
hast du schon mal probiert, das laufen zu lassen ?

Ich würde mal vermuten, dass in der Zeile v.z:=ReadNumber(s,i); in der Prozedur ReadLine eine Exception (Access Violation) kommt.

Warum?:
hDreieck ist ein Zeiger auf TDreieck und er ist = Nil, zeigt also ins Nichts.
Ins "Nichts" kannst du aber keine Daten schreiben.
Abhilfe:
New(hDreieck) als erste Zeile in die Prozedur ReadRecord einfügen.

Dann wirst du in der Zeile Dreiecke.Add(hDreieck); in der Prozedur ReadRecord eine Exception Exception (Access Violation) kriegen.
Warum?!
Die TList Dreiecke existiert noch nicht.
Abhilfe:
Dreiecke:=TList.Create als erste Zeile in der Prozedur Test einfügen.

Und wenn du dann irgendwann Dreiecke nicht mehr brauchst musst du erstens für alle Einträge in Dreiecke ein Dispose machen und anschließend ein Dreiecke.Free.

Letzteres solltest auch im except Block in Test machen.

Alternativ kannst du es so machen, wie Bummi es vorschlug.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:27 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