Autor |
Beitrag |
arminho
      
Beiträge: 59
|
Verfasst: Do 19.06.08 19:50
hallo leute,
ich komme zur zeit bei mir nicht wirklich weiter, da ich nicht weiß wie man das umsetzen kann.
unswar habe ich ein .txt-File in welches Daten reingeschrieben werden können, von dort wieder abgerufen werden und bearbeitet bzw. gelöscht etc. werden können.
ich möchte jeder zeile dieses .txt-Files eine Erkennung zuweisen, sodass ich später einfach mit dem bennenen der Erkennung die entsprechende Zeile abrufen kann.
Zeile 1 soll z.B. ID 1 haben, Zeile 2 ID 2 etc.
am liebsten wäre es mir wenn er mir automatisch die Erkennung vergibt, sobald eine neue Zeile dazugefügt wird.
Ich möchte hier auch keinen fertigen Code oder so, sondern nur mal wissen mit welcher Methode bzw. Befehlen das zu realisieren wäre, da ich echt nicht weiter weiß.
danke euch für eure Hilfe
Zuletzt bearbeitet von arminho am Do 19.06.08 19:53, insgesamt 2-mal bearbeitet
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 19.06.08 20:25
Moin!
arminho hat folgendes geschrieben: | ich möchte jeder zeile dieses .txt-Files eine Erkennung zuweisen, sodass ich später einfach mit dem bennenen der Erkennung die entsprechende Zeile abrufen kann.
Zeile 1 soll z.B. ID 1 haben, Zeile 2 ID 2 etc.
am liebsten wäre es mir wenn er mir automatisch die Erkennung vergibt, sobald eine neue Zeile dazugefügt wird. |
Also mit Automatik bei einer Text-Datei sehe ich da ziemlich schwarz
Ansatz:  - NextID: Cardinal
Autoincrement-Zähler, bei Programminstallation/Inbetriebnahme auf 0 setzen und in jeder Sitzung auf den letzten Wert wiederherstellen
- StringListe anlegen, Textdatei reinladen
- Format der Textdatei: die ersten 8 Zeichen sind die Hexdarstellung der Zeilen-ID, abtrennen und mit StrToInt64('$'+Copy(SL.Strings[i],1,8 )) in dem Object dieser Zeile ablegen
das ist die Zeilen-ID
- beim Anlegen neuer Zeilen den Autoincrement-Index als zugehöriges Object ablegen, dann eins draufzählen
- Suchen einer ID in der Liste: .IndexOfObject()
- Vorm Speichern das Object mit IntToHex(Cardinal(SL.Objects[i]),8 ) vorne an den String anfügen
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 20.06.08 00:17
Mann, mann, was soll denn das werden ? Wegen so etwas noch mit Objekten etc. rumfummeln ?  schreibe die Zeilennummern an den Beginn jeder Zeile und fertig. Den Rest macht man mit copy. 
_________________ Gruß
Hansa
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 20.06.08 11:39
Moin!
hansa hat folgendes geschrieben: | Mann, mann, was soll denn das werden ? Wegen so etwas noch mit Objekten etc. rumfummeln ? |
Wie mit Objekten rumfummeln?  Einfach die Zeilen-ID per Pointer()-Typecast da ablegen, wo sowieso Platz dafür ist.
hansa hat folgendes geschrieben: | schreibe die Zeilennummern an den Beginn jeder Zeile und fertig. Den Rest macht man mit copy.  |
Aha, und das Problem mit der Zahlenlänge im String? Das ist doch wohl in meinem Vorschlag besser gelöst...  (eben outband  )
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Fr 20.06.08 13:02
@arminho beschreib doch mal was du in etwa mit deinem Programm anstellen willst. Möglicherweise gibt es ja auch noch einfachere Lösungen.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
baka0815
      
Beiträge: 489
Erhaltene Danke: 14
Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
|
Verfasst: Fr 20.06.08 13:52
Wenn du das machen möchtest, was ich vermute, könntest du dir mal die Datenbank SQLite angucken.
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 20.06.08 14:20
_________________ Gruß
Hansa
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 20.06.08 14:30
Moin!
hansa hat folgendes geschrieben: | Narses, Objects sind ja schön und gut. Ich bin ja schon froh, wenn einer überhaut weiß, dass es so was gibt. |
hansa, du hast meinen Post nicht verstanden...
hansa hat folgendes geschrieben: | Wieso ist die Zahlenlänge im String ein Problem ? Du meinst 1 ist kleiner als 99999 oder wie ? Die muss an den Anfang des Strings und zwar rechtsbündig. |
Das ist sie bei mir auch, aber dafür über den vollen Wertebereich von Cardinal und noch dazu effizienter codiert (hex).
hansa hat folgendes geschrieben: | Um diese eine Zahl pro Zeile zu verwalten braucht man dann nicht mehr Objects erzeugen und wieder freigeben etc. |
Das habe ich auch nicht vorgeschlagen, sonden das zugeordnete .Objects[] eines .Strings[] in einer TStringList als Speicher für die Zeilen-ID zu "missbrauchen" ( Typecast auf Pointer(), du erinnerst dich sicher an meine erste Erwähnung weiter oben, oder?  ).
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 20.06.08 14:47
_________________ Gruß
Hansa
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 20.06.08 15:18
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Sirke
      
Beiträge: 208
Erhaltene Danke: 2
|
Verfasst: Fr 20.06.08 15:31
Warum nimmt man nicht einfach eine StringList und gut ist? Dort ist jeder Zeile eine Nummer zugeordnet also kann jede Zeile eindeutig Identifiziert werden und es gibt die entsprechenden Befehle zum Anfügen, Ändern und Löschen!
Kann mir vorstellen, dass arminho vorher nur mit einen Stringgearbeitet hatte und die TStringList gar nicht kannte!
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 20.06.08 15:39
Moin!
Sirke hat folgendes geschrieben: | Warum nimmt man nicht einfach eine StringList und gut ist? Dort ist jeder Zeile eine Nummer zugeordnet also kann jede Zeile eindeutig Identifiziert werden und es gibt die entsprechenden Befehle zum Anfügen, Ändern und Löschen! |
Das klappt nur so alleine nicht, weil dann die Zeilen keine eindeutige Kennung haben, sondern nur einen relativen Index. Wenn du z.B. eine Zeile löscht oder einfügst, dann kannst du ein Indexproblem bekommen, wenn du dir "ausserhalb" eine Zeile merken möchtest.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 20.06.08 15:44
Vermutlich reicht die Stringliste alleine schon. Ich habe ja auch eigentlich nur wegen Narses Beitrag geantwortet. Also wegen seiner Objects/Pointer/Hex-Orgie.  @Narses : warte mal auf den Fragesteller. Wir diskutieren über ungelegte Eier.
_________________ Gruß
Hansa
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 20.06.08 15:49
Moin!
hansa hat folgendes geschrieben: | Vermutlich reicht die Stringliste alleine schon. |
Das kann nicht sein, wenn der Fragesteller seine Frage korrekt gestellt hat.
hansa hat folgendes geschrieben: | Ich habe ja auch eigentlich nur wegen Narses Beitrag geantwortet. Also wegen seiner Objects/Pointer/Hex-Orgie. @Narses : warte mal auf den Fragesteller. Wir diskutieren über ungelegte Eier. |
Ich "diskutiere" nicht mit dem Fragesteller, sondern gebe dir grade Nachhilfe...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 20.06.08 16:02
Sei bloß ruhig. Du mit Deiner Pointer-Objects-Hex-Stringliste. 
_________________ Gruß
Hansa
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: So 22.06.08 22:09
irgendwie raff ichs grad nicht  also ich mach son kack immer mit ner Stringlist
dann hab ich die Zeilen fein Säuberlich...
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: So 22.06.08 22:27
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Mo 23.06.08 21:23
okay - dann macht die geschichte sinn
|
|