Autor Beitrag
mccom
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 59



BeitragVerfasst: 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 user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Di 19.12.2006 um 23:28
joker0000
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 70

Win XP
Delphi 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mi 20.12.06 09:13 
user profile iconjoker0000 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 390

Win XP
Delphi 2007 Prof., XE2, XE5
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 20.12.06 13:44 
user profile iconLogikmensch 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 ;-)

user profile iconLogikmensch 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.

user profile iconLogikmensch hat folgendes geschrieben:
Das Array sollte mit Setlength(irgendwas,Anzahl) oder mit SetLength(irgendwas,0) initialisiert werden.


user profile iconLogikmensch hat folgendes geschrieben:
Im Grunde ist das dann eine Art String.
:shock: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154



BeitragVerfasst: Mi 20.12.06 14:03 
wulfskin hat recht, leite einfach von tlist oder tobjectlist ab und überschreibe die sortiermethode
mccom Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 59



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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:
ausblenden Quelltext
1:
2:
3:
aGalle=axyz
Galle=xyz
cGalle=cxyz
mccom Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 59



BeitragVerfasst: 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!