Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datenbank überschreibt inhalte (https://www.delphipraxis.net/160546-datenbank-ueberschreibt-inhalte.html)

DeddyH 19. Mai 2011 16:11

AW: Datenbank überschreibt inhalte
 
Nein! Was Dein Array enthält, sind lediglich Zeiger und keine Daten. Die Objekte musst Du selbst anlegen, das ist nicht so wie bei primitiven Datentypen wie Integer oder Char.

Picard95 19. Mai 2011 16:24

AW: Datenbank überschreibt inhalte
 
hast du nen quellcode für mich?
ich habs so aber auch mal geschaft
((ANDERES PROGRAMM))
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
 begin
          Artikel:=TArtikel.create;
          Hilf:=edit1.text;
          Artikel.set_Art_Nr(Hilf);
          Hilf:=edit2.text;
          Artikel.set_Art_Bez(Hilf);
          PHilf:=strtofloat(edit3.text);
          Artikel.set_Preis(PHilf);
          AHilf:=strtoint(edit4.text);
          Artikel.set_Anzahl(AHilf);
          Pool.Hinzufuegen(Artikel);
          Pool.Ausgabe(Listbox1);
end;
Delphi-Quellcode:
Type TPool = class
             inhalt:array[1..100000]of TArtikel;
             Anzahl:integer;
             constructor create;
             procedure Hinzufuegen(x:TArtikel);
             procedure Ausgabe(x:TListbox);
             procedure Art_Suche(Art_Nr:string;L:TLabel);
             procedure Sortieren_Nr(L:TListbox);
             procedure Sortieren_Bez(L:TListbox);
             end;
implementation
constructor TPool.create;
  begin
    Anzahl:=0;
    inherited create;
  end;
procedure TPool.Hinzufuegen(x:TArtikel);
  begin
    Anzahl:=Anzahl+1;
    Inhalt[Anzahl]:=x;
  end;
procedure TPool.Ausgabe(x:TListbox);
  var Produkt:integer; Hilf1,Hilf2,Hilf3,Hilf4:string;
  begin
    x.clear;
    for Produkt:=1 to Anzahl do
      begin
        Hilf1:=inhalt[Produkt].get_Art_Nr;
        Hilf2:=inhalt[Produkt].get_Art_Bez;
        Hilf3:=floattostr (inhalt[Produkt].get_Preis);
        Hilf4:=inttostr (inhalt[Produkt].get_Anzahl);
        x.items.add(Hilf1+' - '+Hilf2+' - '+Hilf3+' - '+Hilf4)
      end;
   end;
[Edit]und dieses Programm hat funktioniert[/EDIT]

DeddyH 19. Mai 2011 16:35

AW: Datenbank überschreibt inhalte
 
Da hast Du ja auch bei jedem Klick ein neues Objekt erstellt, hier aber nicht. Mal angenommen, Du baust ein Haus und streichst es weiß an. Den Schlüssel legst Du in eine Schachtel. Nun legst Du einen zweiten Schlüssel zu diesem Haus in eine andere Schachtel und streichst das Haus grün. Wenn Du nun den Schlüssel aus der ersten Schachtel nimmst, kannst Du damit das weiße Haus aufschließen?

[edit] Den Quellcode habe ich doch bereits gepostet, statt mit mir zu diskutieren hättest Du den ja einmal ausprobieren können ;) [/edit]

Bummi 19. Mai 2011 16:36

AW: Datenbank überschreibt inhalte
 
weil Du hier
Delphi-Quellcode:
procedure TPool.Hinzufuegen(x:TArtikel);
  begin
    Anzahl:=Anzahl+1;
    Inhalt[Anzahl]:=x;
  end;
ein Objekt übergibst, welches Du vorher erzeugt haben musst.

DeddyH 19. Mai 2011 16:37

AW: Datenbank überschreibt inhalte
 
Genau davon rede ich doch die ganze Zeit.

Picard95 19. Mai 2011 16:39

AW: Datenbank überschreibt inhalte
 
ah danke habe einfach vor jeden Block nochmal die zeile
Delphi-Quellcode:
Atom:=TAtom.create;
geschrieben jetzt geht es.
Danke für die Hilfe

DeddyH 19. Mai 2011 16:44

AW: Datenbank überschreibt inhalte
 
Hoffentlich gibst Du die Objekte aber zum Schluss auch wieder frei.

Picard95 19. Mai 2011 17:01

AW: Datenbank überschreibt inhalte
 
in einer Ausgabe? also so wie ich es jetz mache geht es
Delphi-Quellcode:
Atom:=TAtom.create;
//...
  Atom.set_Atomname('Natrium');
  Atom.set_Atomsymbol('Na');
  Atom.set_Atomserie('Erdalkalimetalle');
  Atom.set_Atomaussehen('silbrig weiß');
  Atom.set_Atomaggregatzustand('Fest');
  Atom.set_Atomgefahren1('Leichtentzündlich (F)');
  Atom.set_Atomgefahren2('Ätztend (C)');
  Atom.set_Atomordnungszahl(11);
  Atom.set_Atommasse(23);
  Atom.set_Atomschmelztemperatur(97.72);
  Atom.set_Atomsiedetemperatur(883);
  Atom.set_Atomdichte(0.968);
  Atom.set_AtomEN(0.93);
  Atom.set_Atomoxidationszahl1(1);
  Periodensystem.Hinzufuegen(Atom);
//...

Bummi 19. Mai 2011 17:06

AW: Datenbank überschreibt inhalte
 
z.B. im Destructor von Periodensystem
Delphi-Quellcode:
for i := Low(AA) to High(AA) do if Assigned(AA[i]) then AA[i].free;

mkinzler 19. Mai 2011 17:08

AW: Datenbank überschreibt inhalte
 
Oder
Delphi-Quellcode:
FreeAndNil(AA[i]);


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.
Seite 4 von 5   « Erste     234 5      

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