Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
363
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin
    Registriert seit
    May 2003
    Beiträge
    630
    Hi!
    Sorry für den blöden Titel ;(

    Ich habe mehere geometrische Figuren, welche aus unterschiedlich vielen Punkten bestehen.
    Es sind auch immer unterschiedliche viele Figuren.
    Diese Daten lese ich aus einer Textdatei aus und will sie dann in ein Array schreiben.
    Die Koordinatenpunkte kann ich ja wunderbar in ein Array schreiben. Da ich ja mehere Figuren habe will ich auch für jede ein eigenes Array haben, nur weiss ich ja vorher nicht wieviele.
    Also brauch ich irgendetwas wo ich, wenn die Textdatei geladen wird, die Daten reinschreibe.
    Ich stelle mir das so vor:
    Daten(1,1) gibt die erste Koordinate der ersten Figur aus. Daten (1,2) die 2. Koordinate usw.
    Das Problem ist nur, dass ja jede Figur unterschiedlich viele Koordinaten hat. also würde zB das erste nur bis (1,5) gehen, das 2. jedoch bis (2,12).
    Also, ich weiss vorher nicht wie viele Figuren und auch nicht wie viele Koordinaten jede der Figuren hat. Wie kann ich das am besten speichern?
    Danke!
     

  2. #2
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hallo.

    Zum Problem mit der Arraygröße: Nimm eine dynamische Liste. ArrayList (System.Collections.ArrayList) oder besser eine generische List (System.Collections.Generic.List).

    Wenn du jetzt eine Liste von Listen von Punkten haben willst, könnte das so aussehen:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    using System.Collections.Generic;
    using System.Drawing;
    ...
    List<List<Point>> figures = new List<List<Point>>();
     
    List<Point> fig1 = new List<Point>();
    fig1.Add(new Point(10, 10));
    fig1.Add(new Point(20, 20));
     
    figures.Add(fig1);

    Statt der Liste mit Punkten könntest auch einen GraphicsPath benutzen ;D - Oder eine eigene Klasse .. je nachdem was du brauchst..

    lg,..
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  3. #3
    Avatar von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin
    Registriert seit
    May 2003
    Beiträge
    630
    Danke
    Mh, und wie kann ich dann dadrauf zugreifen? Nicht so schön übersichtlich wie wenn es ein Array wäre oder?
    Ach Mensch das sind alles so viele neue Sachen das ich gar nicht vorankomme ;(
    Vielleicht guck ich mir wirklich mal ganz genau den GraphicsPath an bevor ich irgendwas unnötiges einbaue
    Bei deinem Code versteh ich wieder mal gar nichts.. seit wann gibt es denn bei C# < und > !?
    Achjah.. und ich dachte immer ich kann mir jede Programmiersprache schnell draufschaffen -.-
     

  4. #4
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Zugriff erfolgt wie bei einem Array..

    Code csharp:
    1
    2
    
    List<Point> afigure = figures[0];
    Point p1 = afigure[0];

    Zu Generics hab ich dir gestern schon einen Link gegeben. Das Feature gibts, ich glaub ich habs auch schon erwähnt, seit C# 2.0. (.net 2.0, VisualStudio 2005 .. )
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  5. #5
    Avatar von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin
    Registriert seit
    May 2003
    Beiträge
    630
    Mh und wie kann ich dann unterscheiden um welche Figur es sich gerade handelt?
    Es soll auch möglich sein zB zwei Figuren zu einer zu Verbinden indem ich bei jeder Figur eine Linie angebe und die Figuren dann an diesen Linien zusammengefügt werden (zB das aus zwei Quadraten ein Rechteck wird wird, oder aus zwei Dreicken ein Trapez oder eine Raute)
    Dafür muss ich ja dann auch die Koordinaten neu anordnen oder? Und danach sollten die neuen Koordinaten bzw. die neue Figur dann auch anstelle der beiden in dem Array oder der Liste stehen.
    Bei der Liste bzw. deinem Code ist mir irgendwie nicht klar wie ich das anstellen soll.
    Ein Array finde ich irgendwie viel anschaulicher.
    Ist die Liste oder der Grafikpath dafür wirklich geeignet? Ich hoffe nicht dann muss ich da nicht durchsteigen X(
     

  6. #6
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Eine Liste ist nichts anderes als ein dynamisches Array.. da kannst ohne Probleme neue Punkte einfügen, ohne das du Stress mit der Arraygröße bekommst.

    Beschäftige dich mal genauer mit den ganzen Sachen die bisher erwähnt wurden, und probier manche Sachen einfach mal aus..
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  7. #7
    Avatar von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin
    Registriert seit
    May 2003
    Beiträge
    630
    Mh ok das klingt gut, dann muss ich mich da wohl oder übel mal vernünftig reinarbeiten =)
    Vielen Dank bis hier
     

  8. #8
    Avatar von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin
    Registriert seit
    May 2003
    Beiträge
    630
    So, nach etlichem Lesen und Probieren später bin ich mir eigentlich sicher, dass das was ich gerne hätte nicht geht oder ich es (mal wieder) nicht verstanden habe.

    Die Liste ist erstmal super für mein Vorhaben. Mein Problem ist nur nachwievor, dass ich gerne für jede Figur eine eigene Liste hätte, aber vorm Programmstart nicht weiss wie viele.
    Ich dachte jetzt an sowas:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    List<int>[] bla = new List<int>()[2];
     
                bla[0].Add(1);
                bla[0].Add(2);
                bla[0].Add(3);
     
                bla[1].Add(1);
                bla[1].Add(2);
                bla[1].Add(3);
    Was natürlich nicht geklappt hat

    Gibt es denn irgendeine Möglichkeit das so zu machen?
    Danke!

    [Edit]
    Ok ich löse das jetzt mit einer temporären Liste wo ich was zwischenspeichere. Das müsste auch gehen.
    Es würde mich aber immernoch interessieren ob das von oben funktioniert
    Geändert von kuhlmaehn (11.07.07 um 11:15 Uhr)
     

  9. #9
    Avatar von Razorhawk
    Razorhawk Razorhawk ist offline Webdesigner und MSP
    Registriert seit
    Aug 2002
    Ort
    Berlin
    Beiträge
    1.363
    Eine Möglichkeit wäre folgende


    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
     
    ArrayList arrList = new ArrayList();
     
    ArrayList.Add(new List<int>());
    ArrayList.Add(new List<int>());
     
    ArrayList[0]).Add(1);
    ArrayList[0]).Add(2);
    ArrayList[0]).Add(3);
     
    ArrayList[1].Add(1);
    ArrayList[1].Add(2);
    ArrayList[1].Add(3);
     
    /* Inhalt des Arrays:
     
    1 2 3 
    1 2 3
     
     
    Der Zugriff geht dann wie folgt
    */
     
    ((List<int>)ArrayList[0])[0] = 11;
    ((List<int>)ArrayList[1])[0] = 111;
     
    /* Inhalt des Arrays:
     
    11 2 3
    111 2 3
    */
     

Ähnliche Themen

  1. Zufallszahl ohne Wiederholung im Array
    Von WenzelPaul im Forum Java
    Antworten: 14
    Letzter Beitrag: 29.04.10, 14:18
  2. ganzen array ohne Kommata
    Von DocHentai im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 23.01.07, 15:50
  3. Array ohne Grössenangabe
    Von cibal_gina im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 01.06.05, 18:17
  4. Smarty & Array OHNE index
    Von pnx im Forum PHP
    Antworten: 4
    Letzter Beitrag: 10.10.04, 16:13
  5. Array - mit => oder mit ohne =>
    Von Tim C. im Forum PHP
    Antworten: 5
    Letzter Beitrag: 27.01.02, 02:23