Autor Beitrag
mg80s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33

WinXP SP2
Delphi 6 Personal ;) , C# (VS 2003 Prof.)
BeitragVerfasst: Do 06.10.05 00:34 
Hallo nochmal.

Wie in einem vorherigen Post schon erwähnt, bastle ich gerade an einer Tabellenstrukur.
Sie soll ähnlich dem HTML-Prizip aufgebaut sein, also:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
<table>
  <tr>
    <td>  </td>
    <td>  </td>
  </tr>
</table>


Eine Tabelle besteht also aus Zeilen und in diesen Zeilen gibt es Spalten.
Nur habe ich das ganze noch weitergesponnen und will eine Spalte gleich wieder als neue Tabelle interpretieren.
Zugleich kann jede Spalte, die keine Zeilen beinhaltet, auch ein Element (Text, Bild etc) beinhalten.
Die Klasse, die ich also gebastelt habe ist diese:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
type
  TNode = class (TObject)
   private
    NextNodeAmount: Integer;
    isRow, isColoumn: boolean;
    NextNode: Array[0..10of TNode;
    Element: Pointer;
  end;


Ich habe also nur Knoten, die auf weitere Knoten zeigen. da muß natürlich noch eine Unterscheidung von Spalte und Zeile rein, mein Hauptproblem ist aber:
Dieses Konstrukt ist ja in diesem Fall auf 10 Unterknoten beschränkt. Das Array an-und-für-sich könnte ich ja dynamisch deklarieren, aber was, wenn ich 5 Knoten erfolgreich "verbunden" habe und der Benutzer überlegt sich einen 6ten einzufügen?
Gibt es ein "voll-dynamisches" Array für diesen Zweck?

Vielen Dank
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 06.10.05 01:01 
Hallo!

Zuerst einmal würde ich die Information, ob es sich um eine Zeile oder eine Spalte oder sonstwas handelt, nicht in isRow oder isColumn speichern, sondern ich würde eine Basisklasse TElement erstellen, welche Eigenschaften wie NextNode, Element, etc. enthält und von denen dann Klassen TRow, TColumn oder TTable ableiten. Dann kannst Du nämlich auch noch spezifische Eigenschaften einfügen.

Nun zu Deiner eigentlich Frage, zu dynamischen Arrays: Dynamische Arrays sind "voll-dynamisch", wie Du das nennst. Du kannst mittels SetLength(aArray, Length(aArray)+1)); immer noch ein Element anhängen. Aber Vorsicht: Wo immer es geht, solltest Du das wiederholte Verlängern eines Arrays um ein Element vermeiden, da das Array immer neu kopiert wird.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mg80s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33

WinXP SP2
Delphi 6 Personal ;) , C# (VS 2003 Prof.)
BeitragVerfasst: Do 06.10.05 01:55 
Perfekt. Das löst mein Problem wohl voll und ganz. Danke!

Bedeutet das Neu-Kopieren dann "einfach nur" Rechenzeit zum Kopieren oder werden dann wirklich immer neue Kopien angelegt? Ersteres könnte ich in Kauf nehmen, aber Speicherplatz verschwende ich nur ungern..
mg80s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33

WinXP SP2
Delphi 6 Personal ;) , C# (VS 2003 Prof.)
BeitragVerfasst: Fr 07.10.05 14:47 
Für diejenigen, die's interessiert (:wink:), hat alles super geklappt.

Habe mal ein Screenshot angefügt. Der Sinn des Ganzen war, dass ich gerade einen Homepage-Editor ala Adobe ImageReady (aber natürlich weniger komplex) bastle.
Mithilfe der tabellarischen Aufteilung kann nun der Benutzer die Homepage-Vorlage (also das Bild) in Boxen teilen, die dann mit Texten, Bildern etc gefüllt werden können. Im Screenshot war's einfach mal versuchsweise eine Aufteilung in 3 Reihen, eine wiederum mit 3 Spalten, dann wieder 5 Reihen mit 3 Spalten.

Es steht zwar noch einige Arbeit vor mir, wenn's halbwegs spruchreif ist, stell ich's dann aber mal in den Freeware-Teil, evtl. auch OpenSource, bin noch nicht ganz sicher.
Einloggen, um Attachments anzusehen!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 07.10.05 17:37 
user profile iconmg80s hat folgendes geschrieben:
Bedeutet das Neu-Kopieren dann "einfach nur" Rechenzeit zum Kopieren oder werden dann wirklich immer neue Kopien angelegt? Ersteres könnte ich in Kauf nehmen, aber Speicherplatz verschwende ich nur ungern..
Da kann ich Dir diesen Text empfehlen: www.dsdt.info/inside.../speichermanager.php

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
mg80s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 33

WinXP SP2
Delphi 6 Personal ;) , C# (VS 2003 Prof.)
BeitragVerfasst: Fr 07.10.05 19:42 
Wow, das klingt nicht sonderlich prickelnd. Zum Glück sollte die Anwendung aber höchstens Längen bis schätzungweise 30 Elemente brauchen und es kann immer nur bei Benutzerwunsch eins anhängen. Damit sollte sich das in Grenzen halten. Bei größeren Sachen sollte ich das allerdings im Hinterkopf behalten.