property Items[Str: String]: String read GetItem write S

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

property Items[Str: String]: String read GetItem write S

Beitrag von pluto »

Hallo,

Code: Alles auswählen

property Items[Str: String]: String read GetItem write SetItem; default;
function TForm1.GetItem(Str: String): String;
begin
 
end;
 
procedure TForm1.SetItem(Str: String; const AValue: String);
begin
 
end;


dazu hätte ich eine Frage wie könnte ich es am besten nutzen ?
mir geht es um eine schnelle suche !
ich habe mal gelesen das es bei PHP arrays gibt die mit einem String statt Integer aufgerufen werden können...
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Irgendwie kann ich gerade nicht so ganz folgen.

geht es nun darum, wie du die Werte am besten Speicherst, um sie schnell verarbeiten zu können oder was soll mir das sagen?
Und was hat nun php damit zu tun?

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

schliesse mich monti an
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Ich weiss es auch nicht genau.
Aber bezüglich PHP meint Pluto bestimmt assoziative Arrays:

http://de.wikipedia.org/wiki/Assoziatives_Array

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Genau theo das meinte ich !
Mir ging es nur darum wie ich so ein Array benutzen kann, um mehr nicht !
und zwar wird in einem Array normalerweise ja ein Intereger als Index genommen!

Ich meine in PHP gibt es die Möglichkeit auch einen String zu übergeben, eine ID oder sowas !

Vielen dank für den link theo werde ich mir gleich mal ansehen !
MFG
Michael Springwald

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Das wirst du für FPC/Delphi mit einem eigenem Objekt machen müssen. Das wäre mal eine interessante Denksport-Aufgabe. Hab's gerade mal angedacht, das wird garnimma so einfach.

Das muß irgendwie über "Friend" gehen, dann kannst du auch Operatoren dafür bestimmen. Das solltest du mal tief in die Delphi-Doku gucken, für FPC wird es da wohl nichts genügend ausführliches geben.

Andere Möglichkeit wäre vielleicht php4delphi in Lazarus integrieren. Dann könnte man auch PHP-Skripte verarbeiten. Hat das mal irgendwer hier probiert, das zu portieren?
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich würde mal sagen das ist mir zu aufwendig !
Ich denke mal ich habe nicht so viele Eigenschaften das sich das lohnen würde !

mein weg sieht so aus:
Ich speichere nicht in Variabeln den Inhalt von Eigenschaften ab sondern in einen Array of TMeinTyp
und beim Setzten oder Lesen von Eigenschaften wird dieser Array genutzt.

Somit vereinfache ich das laden und speichern extrem !

Allerdings ist die Defination einer neue Eigenschaft nicht mehr so einfach:
ich muss schauen ob sich diese Eigenschaft schon im Array habe wenn nicht füge Hinzu, wenn ja setzte den wert neu.
Na gut so aufwendig wird es auch nicht werden da, ich das über eine funktion laufen lassen kann....

ich frage mich ob es noch einen anderen Weg geben würde ?
Zum speichern von Eigenschaften in Dateien, brauche ich ja einmal eine ID die diese Eigenschaft genau iden. und einmalig ist. Das wollte ich über Konstanten machen.

Somit kann ich beim laden eine liste erstellen und der jeweiligen komponente übergeben, ohne sie vohrer noch anpassen zu müssen !

Ich hoffe ihr könnt euch das vorstellen wie ich das meine !
Wenn ja: währe das der beste weg für mein Problem ?

Ich habe mal in der doku gelesen,das Lazarus das irgenwie über Streaming löst, nur kann ich mir dann nicht vorstellen wie ich ascci abspeichern könnte !

Ich möchte ja verschinde Formate anbieten.
MFG
Michael Springwald

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Ich hab nochmal genauer hingeschaut, das geht über TCustomVariant. Ist garnicht so schlimm. Dafür kannst du dann aber auch sowas hier machen:

Code: Alles auswählen

uses
  SysUtils, Classes, DateUtils, Variant;
 
type
 
  TMyType = class(TCustomVariant)
     // hier die Methoden deklarieren
  end;
 
var
  tv: TMyType;
 
procedure MachWas(AKey, ANachname: string);
var
  Astring: string;
begin
  tv:= tv + 'AKey' + ' = ' + ANachname;
  // oder
  tv:= tv + 'Nachname = Müller';
  // oder
  // alle Daten von Müller als String zurückgeben
  Astring:= tv['Müller'];
  // wenns Müller nicht gibt, dann leerer String
  // oder
  if (tv['Müller'] <> '') then begin
     // hier irgendwas mit den Daten von Müller machen
  end;
end;


Guck mal in der Delphi-Hilfe nach Variant, das ist da mit ein paar Beispielen ganz brauchbar für den Anfang beschrieben. Ich hab hier auf den Buch-CD's bestimmt auch noch ein ausführlicheres Beispiel dafür.

Das kann für viele Sachen ne ganz praktische Sache sein, z.B. komplexe Zahlen lassen sich auf die Weise als Typ deklarieren und dann mit den normalen Operatoren behandeln. Macht also durchaus Sinn sich damit mal zu befassen.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Also wenn ihr euch versteht ist ja gut ich versteh euch beide nich :p
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

@Christian du musst auch nicht alles verstehen oder ? :D

@schnullerbacke
danke für dein Beispiel..... nur verstehen tue ich das nicht so ganz:
du

Code: Alles auswählen

procedure MachWas(AKey, ANachname: string);
var
  Astring: string;
begin
  tv:= tv + 'AKey' + ' = ' + ANachname;
  // oder
  tv:= tv + 'Nachname = Müller';
  // oder
  // alle Daten von Müller als String zurückgeben
  Astring:= tv['Müller'];
  // wenns Müller nicht gibt, dann leerer String
  // oder
  if (tv['Müller'] <> '') then begin
     // hier irgendwas mit den Daten von Müller machen
  end;
end;


du defnierst einen String und setzten hin zusammen.... meine frage ist jetzt warum tv['irgenwas'] jetzt funktniert ! ich verstehe noch nicht so ganz wie das als liste verwendet wird.
MFG
Michael Springwald

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

TMyType wird von TInvokeable...(findet sich in der Beschreibung zu TCustomVariantType auch) abgeleitet. Da darf man sich dann auch ein Array definieren. In TMyType mußt du dann die entsprechenden Routinen z.V. stellen, die für die Operatoren die Behandlung durchführen. Im Quellcode kannst du dann die Operatoren entsprechend anwenden.

Ist also ne Echte Klasse präsentiert sich aber wie ein einfacher Datentyp.

Ein Teil der IDE von Delphi ist offenbar nach dem Muster gebaut, einige Typen in FMTbcd und VarCmplx gibt es auch schon. Da kann man also Anleihen nehmen.
Zuletzt geändert von schnullerbacke am Sa 17. Feb 2007, 13:01, insgesamt 1-mal geändert.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

kannst du mal ein kleines beispiel machen ?
ich habe z.z. kein Delphi drauf und auch keine Delphi Hilfe zur hand.....

ich meine irgenwo gab es mal eine deutsche Delphi 7 Hilfe zum Downloaden !
MFG
Michael Springwald

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Nee, die D-Hilfen gibts nicht zum Download mal eben so. Sind auch ne Menge Dateien. Ich könnte die höchstens mal packen und sehen wie groß das wird.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ne lass mal ! das bringt auch nichts ! dann muss ich mir Delphi halt wieder installieren und dann die Hilfe kopieren evlt. habe ich sie auch noch mal schauen !
MFG
Michael Springwald

Antworten