Autor |
Beitrag |
mccom
      
Beiträge: 59
|
Verfasst: Di 19.12.06 23:20
Hm, ich bin verzweifelt. Ich hab bei der Suche und in google nach "arrays" "array funktionen" "array operatoren" gesucht, aber nichts gefunden. Von PHP kenn ich halt die einzelnen Funktionen um Arrays zu sortieren, in ihnen zu suchen, sie zu verbinden etc.
In Delphi hab ich jetzt davon nichts gefunden hier im Forum auch nicht. Suche ich nach den falschen begriffen? Oder gibt es socwas nicht? delphi liefert auch auch fast die selben Befehle zur String-Funktion mit^^
Wäre super wenn mir jemand helfen könnte... Moderiert von Christian S.: Topic aus VCL (Visual Component Library) verschoben am Di 19.12.2006 um 23:28
|
|
joker0000
      
Beiträge: 70
Win XP
Delphi 2006
|
Verfasst: Mi 20.12.06 00:21
var x: array[a..b] of c; (a=start-z.b.1; b=ende-z.b.10; c=typ-z.b string oder integer)
sortieren geht mit bubblesort z.b. (kannste dich im netz schlau machen)
dazu dann n zwischenspeicher-stell dir vor du willst von 2 gläsern die flüssigkeiten austauschen, dazu 3. glas.
wofür brauchst du denn das array? wäre sicher hilfreicher, wenn man das wüsste, aber vllt. reicht dir das ja schon???
dann gibts ja noch 2-dimensionale arrays, davon hab ich allerdings keine ahnung...
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Mi 20.12.06 00:57
Hallo,
Delphi hat nicht so viele Funktionen für Arrays, dafür gibt es mehrere verschiedene Listen (TList, TObjectList, ...) die einem ordentlich die Arbeit abnehmen!
Gruß Hape!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mi 20.12.06 09:13
joker0000 hat folgendes geschrieben: | var x: array[a..b] of c; (a=start-z.b.1; b=ende-z.b.10; c=typ-z.b string oder integer)
sortieren geht mit bubblesort z.b. (kannste dich im netz schlau machen) |
Nee, bitte nicht Bubblesort, nimm bitte Quicksort.
Für numerische Arrays gibt es bei Delphi nichts. Das muss man sich selber basteln.
_________________ Na denn, dann. Bis dann, denn.
|
|
Logikmensch
      
Beiträge: 390
Win XP
Delphi 2007 Prof., XE2, XE5
|
Verfasst: Mi 20.12.06 11:05
Schön ist die Verwendung von dynamischen Arrays, denn die können prinzipiell aus beliebigen Daten bestehen (vorsicht: bei Objekten-Arrays ist TList bzw. TObjectList vorzuziehen). Wenn das Array die physikalischen Grenzen der Speicherverwaltung nicht sprengt, kann man es einfach mit
var
irgendwas:array of irgendeintyp;
deklarieren. Das Array sollte mit Setlength(irgendwas,Anzahl) oder mit SetLength(irgendwas,0) initialisiert werden. Im Grunde ist das dann eine Art String. Daher kann man auch jederzeit mit Length(irgendwas) die momentane (= dynamische) Länge an Elementen ermitteln. Gelöscht wird das Array dann einfach durch Zuweisen mit SetLength(irgendwas,0) bzw. automatisch innerhalb einer Prozedur/Funktion durch den Rahmencode vom Delphi.
Löschen, hinzufügen muss man dann aber selber machen, leider greifen die Stringfunktionen Copy und Delete hierbei nicht.
_________________ Es gibt keine Probleme - nur Lösungen!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 20.12.06 13:44
Logikmensch hat folgendes geschrieben: | Schön ist die Verwendung von dynamischen Arrays, denn die können prinzipiell aus beliebigen Daten bestehen |
Hinsichtlich der verwendbaren Datentypen gibt es zwischen dynamischen und statischen Arrays keine Unterschiede. In beiden kann man alle benutzen
Logikmensch hat folgendes geschrieben: | Wenn das Array die physikalischen Grenzen der Speicherverwaltung nicht sprengt, kann man es einfach mit
var
irgendwas:array of irgendeintyp;
deklarieren. |
Da an der Stelle noch gar kein Speicher belegt wird, ist das immer möglich.
Logikmensch hat folgendes geschrieben: | Das Array sollte mit Setlength(irgendwas,Anzahl) oder mit SetLength(irgendwas,0) initialisiert werden. |
Logikmensch hat folgendes geschrieben: | Im Grunde ist das dann eine Art String. |
 Wo ist da ein String?
Grundlagen zu Arrays habe ich z.B. hier beschrieben.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Böser Borstel
      
Beiträge: 154
|
Verfasst: Mi 20.12.06 14:03
wulfskin hat recht, leite einfach von tlist oder tobjectlist ab und überschreibe die sortiermethode
|
|
mccom 
      
Beiträge: 59
|
Verfasst: Mi 20.12.06 21:47
Erstmal danke für eure super guten Tipps. Also was will ich machen:
Ein Programm das bei Eingabe eines Strings(Krankheitsbeschreibung) in einer Datenbank(Ini-Datei für erste Beta wegen KKompatibilität)nachschauen soll, ob er diese Krankheit schon kennt und dann sagen soll, was für einen tisch(OP-Tisch) man dafür verwenden soll.
Das sieht so aus: Ich hab 3 Ini-Datein eine für die verschiedenen Kliniken(Gyn, Unfall etc) eine für die Tische(Vac-Matte etc) und eine in der alle bis jetzt eingegebenen Krankheiten mit dem Vorschlag als ID steht(lap. Galle->Tisch ID 2)
So, ich will also die INIs in eine Array einlesen um nur einmal die Inis auslesen zu müssen. Dann Wird ein String eingegeben: (Lap. Galle, Appendix etc)(der String besteht aus mehreren Wörter, leerzeichen etc). Dieser String wird einer Funktion übergeben. Dann beginnt eine FOR-Schleife in der das krankheits-Array abgearbeitet wird. Jeder eintrag wird geöffnet, geschaut ob die Klinik mit der eingabe übereinstimmt. Wenn nein, nächster wenn ja, dann wird der String zerlegt. immer bis zum Leerzeichen wird genommen udn geschaut ob es in der eingabe vorkommt. wenn ja, dann wird es FETT übernommen wenn nein dann normal. Sollten NULL treffer da sein wird der string verworfen, sollte MIN. ein Wort passen wird es in einer Ergebniss-Array gesaved UND dazu noch wieviele Wörter übereinstimmten.
Am ende werden alle Strings die min einen treffer hatten zurückübergeben, aber davon nur die besten 10 angezeigt. DOrt wird dann gesagt, mit 97% chance musst du Tisch XY benutzen.
Soweit verstanden was ich machen will? Habs jetzt zum ersten Mal versucht, meine Gedanken in Worte zu fassen, weil sonst macht man es ja für sich allein...
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 20.12.06 22:50
Das geht einfacher als mit einem Array. Und zwar kannst du Wertpaare wie "Galle=xyz" in einer TStringList speichern und dann darauf zugreifen. Die sortiert dir das ganze auch noch... Und laden und speichern geht mit den entsprechenden Funktionen (LoadFromFile und SaveToFile).
Kleines Beispiel: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var tmp: TStringList; begin tmp := TStringList.Create; tmp.Add('aGalle=axyz'); tmp.Add('Galle=xyz'); tmp.Add('cGalle=cxyz'); ShowMessage('Galle: ' + tmp.Values['Galle']); ShowMessage('aGalle: ' + tmp.Values['aGalle']); tmp.SaveToFile(ExtractFilePath(ParamStr(0)) + '\test.txt'); tmp.Free; |
In der Datei steht dann: Quelltext 1: 2: 3:
| aGalle=axyz Galle=xyz cGalle=cxyz |
|
|
mccom 
      
Beiträge: 59
|
Verfasst: Do 21.12.06 21:40
Vielen dank für deinen Tipp!
ich muss aber leider zugeben ich hab noch nie mit TStringList und SaveToFile gearbeitet. Sonst immer mit INI wenn ich datenbank unabhängig sein wollte. deshalb ein zwei dumme fragen:
1. In der INI kann ich ja einem Schlüssel mehrere Werte zuweisen:
[OP_ID_1]
Art=Galle XY
Tisch=TM
Klinik=Klinik XY
Short=KXY
[...]
kann ich in einer List auch mehrere Sachen verknüpft speichern? also so wie in der INI? denn da gehören ja mehrere infos zusammen...
2. kennt einer einen schon vorhandenen such algo? Also strings suchen in andere strings? So google mäßig?^^ oder muss ich das echt händisch stück für stück machen?
Danke für die Antworten!
|
|
|