AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Suche Alternative zu Array

Ein Thema von Yheeky · begonnen am 15. Apr 2008 · letzter Beitrag vom 23. Apr 2008
Antwort Antwort
Seite 2 von 3     12 3   
Nuclear-Ping
(Gast)

n/a Beiträge
 
#11

Re: Suche Alternative zu Array

  Alt 16. Apr 2008, 10:59
Zitat von Yheeky:
Wenn ich drei verschiedene Daten speichern möchte wie z.B. Automarke, Modell und Anzahl Türen. Normalerweise wäre das in einem Array: [...]
Also wenn man sowas in C "normalerweise" in (so-)einem Array ablegt, dann muss ich sagen, dass ich sehr froh bin, mit Delphi zu arbeiten.
In den Kinderschuhen von Pascal und Delphi lernt man doch bereits, Records zu verwenden und mit Arrays umzugehen (für die Lernwilligen). Wo lernt man bitte sowas in C?
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Suche Alternative zu Array

  Alt 16. Apr 2008, 15:06
Zitat von Nuclear-Ping:
Also wenn man sowas in C "normalerweise" in (so-)einem Array ablegt, dann muss ich sagen, dass ich sehr froh bin, mit Delphi zu arbeiten.
In den Kinderschuhen von Pascal und Delphi lernt man doch bereits, Records zu verwenden und mit Arrays umzugehen (für die Lernwilligen). Wo lernt man bitte sowas in C?
Vorsicht! C# != C

Zitat von Yheeky:
Aber bei einem Array muss ich ja immer die Größe mit angeben und das ist bei C# beim Typ list<> z.B. nicht so.
Du kannst wenn du willst auch ein Array dynamisch in der Länge verändern:

Delphi-Quellcode:
...
var
  a: array of String;
begin
  SetLenth(a, 5); // Nun hast du schonmal 5 Speicherstellen
  a[0] := 'blubb';
  ...
  SetLength(a, 25); //Un nun hast du 25 Speicherstellen
end;
Schöner ist es aber wie schon gesagt mit einer Liste. Ich bevorzuge dabei die TObjectList von Delphi bzw. bei nonVCL-Projekten neme ich meine eigene TObjList.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#13

Re: Suche Alternative zu Array

  Alt 16. Apr 2008, 15:20
Zitat von M. Hassmann:
dann erstellst du dir ein record:

Delphi-Quellcode:
type
  TAuto = record
    Marke: string;
    Modell: string;
    Tueren: Integer;
  end;
  PAuto = ^TAuto;
Und mit einer TList oder einem Array kannst Du dann Deine Records bzw. Pointer auf Reocrds verwalten.


Delphi-Quellcode:
var
  AList: TList;
  Auto1: PAuto;
  Auto2: PAuto;
begin
  ...
  AList := TList.Create();
  try
    Alist.Add(Auto);
    ...
    Auto2 := AList[0];
  finally
    AList.Free();
  end;
Okay, aber wie kann ich die Daten füllen? Wenn ich auf Auto.Marke zugreife kommt bei mir ne Fehlermeldung (Speicherzugriffverletzung).
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#14

Re: Suche Alternative zu Array

  Alt 16. Apr 2008, 15:26
Delphi-Quellcode:
type
  TAuto = record
    Marke: string;
    Modell: string;
    Tueren: Integer;
  end;
  PAuto = ^TAuto;

procedure TForm4.FormCreate(Sender: TObject);
var
  AList: TList;
  Auto1: PAuto;
  Auto2: PAuto;
begin
  AList := TList.Create();
  try
    Auto1 := New(PAuto);
    Auto1.Marke := 'blubb';
    Alist.Add(Auto1);
    Auto2 := AList[0];
    ShowMessage(Auto2^.Marke);
  finally
    AList.Free();
  end;
end;
mal eben zusammengehackt.
Speicher sollte nach new() auch wieder freigegeben werden mit dispose
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#15

Re: Suche Alternative zu Array

  Alt 16. Apr 2008, 15:37
Ah, cool...funktioniert auch!

Warum das ^ in der Zeile: ShowMessage(Auto2^.Marke); Funktioniert doch auch ohne?!

Danke!!!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.400 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Suche Alternative zu Array

  Alt 16. Apr 2008, 15:40
Dass es auch ohne funktioniert, liegt an der Compiler-Magic, richtig ist es auf jeden Fall mit ^.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#17

Re: Suche Alternative zu Array

  Alt 17. Apr 2008, 20:07
Hab doch noch mal ne Frage, weil bei mir was nicht funktioniert.
Ich habe folgenden Code, mit dem ich XML Daten auslese. Diese sollen dann in eine TList:

Delphi-Quellcode:
type
  TDaten = record
    ID : Cardinal;
    Key : String;
    Value : String;
  end;

  PDaten = ^TDaten;

//...

var I, J : integer;
    neuerDatensatz : PDaten;
begin
  XML := newXMLDocument;
  XML.XML.Text := XMLString;
  XML.Active := True;

  // Datensatzlist (result) erstellen
  result := TList.Create;

  // Werte zählen
  for I := 0 to XML.DocumentElement.ChildNodes.Count - 1 do
    begin
      for J := 0 to XML.DocumentElement.ChildNodes[XMLNode].ChildNodes.Count - 1 do
      begin
        // neuen Datensatz erstellen
        neuerDatensatz := new(PDaten);

        neuerDatensatz.ID := i;
        neuerDatensatz.Key := XML.DocumentElement.ChildNodes[I].ChildNodes[J].NodeName;
        neuerDatensatz.Value := XML.DocumentElement.ChildNodes[I].ChildNodes[J].NodeValue;

        result.Add(neuerDatensatz);
      end;

    end;

end;
Das result ist aber leider immer leer, egal was ich mache
Kann mir jemand sagen, wieso ich keine Daten erhalte? Wenn ich statt result eine lokale Variable erstelle und sie am Ende result zuweise, funktioniert es übrigens auch nicht.

Wäre cool, wenn mir jemand helfen könnte.
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#18

Re: Suche Alternative zu Array

  Alt 17. Apr 2008, 20:27
das ist doch ein neues thema bzw eine neue frage die du hier stellst. fange also bitte einen neuen thread dazu an, danke.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#19

Re: Suche Alternative zu Array

  Alt 17. Apr 2008, 20:37
Naja, es handelt sich ja immer noch um die Alternative von einem Array, klar könnte man da ein neuen Thread aufmachen, aber ich glaube, dass das Problem relativ schnell abgehandelt sein wird, weil vermutlich nur ein kleiner Fehler drin ist...deswegen versuche ich´s nochmal in dem Thread.
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#20

Re: Suche Alternative zu Array

  Alt 17. Apr 2008, 20:40
Zitat:
Delphi-Quellcode:
var I, J : integer;
    neuerDatensatz : PDaten;
begin
  XML := newXMLDocument;
  XML.XML.Text := XMLString;
  XML.Active := True;

  // Datensatzlist (result) erstellen
  result := TList.Create;

  // Werte zählen
  for I := 0 to XML.DocumentElement.ChildNodes.Count - 1 do
    begin
      for J := 0 to XML.DocumentElement.ChildNodes[XMLNode].ChildNodes.Count - 1 do
      begin
        // neuen Datensatz erstellen
        neuerDatensatz := new(PDaten);

        neuerDatensatz.ID := i;
        neuerDatensatz.Key := XML.DocumentElement.ChildNodes[I].ChildNodes[J].NodeName;
        neuerDatensatz.Value := XML.DocumentElement.ChildNodes[I].ChildNodes[J].NodeValue;

        result.Add(neuerDatensatz);
      end;

    end;

end;
kannst du auch bitte den funktionkopf posten?
und vorab: es ist unschön eine tlist in einer funktion zu erzeugen und diese als ergebnis der funktion zurückzugeben.
  Mit Zitat antworten Zitat
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 01:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf