ListView anklicken

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Joachim Raap
Beiträge: 143
Registriert: Mo 30. Mär 2020, 12:37

ListView anklicken

Beitrag von Joachim Raap »

Hallo, ich versuche, einen Record aus einer ListView auszuwählen, in der er mit anderen dargestellt wird. Wurde er angeklickt, soll dieser Satz dann aus einer DATEI gelesen werden, und verschiedene Felder dieses Records in Editfeldern übertragen werden. Was ich leider nicht hinbekomme ist der Teil, in dem der Satz in der ListView angeklickt wird. Ich habe mir den Code irgendwo abgeschrieben - leider funktioniert er nicht (vielleicht auch deshalb, weil ich irgendwas verschlabbert habe)
Ich stelle mal den Code ein, den ich gebastelt habe. Kann mir jemand helfen????

Code: Alles auswählen

procedure TFMGruppen.LVGruppenClick(Sender: TObject);
   var
    LVAuswahl: string;

   begin
    //In der LV wurde ein Satz angeklickt.
    //Datensatz aus Datei lesen; Editfelder füllen
    if FMGruppen.LVGruppen.ItemIndex<>-1 then
     begin
      LVAuswahl:=FMGruppen.LVGruppen.Selected.Caption;
      FileMode:=2;
      AssignFile(GrpDatei,'Gruppen.rec');
      ReWrite(GrpDatei);
      repeat
       read(GrpDatei,GrpSatz1);
      until LVAuswahl=IntToStr(GrpSatz1.GrpNr)
     end;
    if EOF(GrpDatei)
       then begin
             FehlerCode:=3;
             Fehlermeldung;
            end
       else begin
             FMGruppen.EDTGrpNr.Text:=IntToStr(GrpSatz1.GrpKto);
             FMGruppen.EDTGrpName.Text:=GrpSatz1.GrpName;
            end;
   end; 

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

Re: ListView anklicken

Beitrag von theo »

Joachim Raap hat geschrieben: Sa 29. Okt 2022, 10:54 Kann mir jemand helfen????
Habe ich schon hier, aber anscheinend bleibst du lieber auf dem Holzweg. :wink:
Wenn du dazu Fragen hast, dann frage. Auf dem Holzweg helfe ich dir nicht weiter.

Komm von der Idee weg, direkt auf der Datei arbeiten zu wollen, das ist Krampf.
Mache die Änderungen in einer Liste im Speicher und am Ende schreibst du das Ganze in die Datei, wie ich es für dich vorbereitet habe.

Thandor
Beiträge: 153
Registriert: Sa 30. Jan 2010, 18:17
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 3.0 mit FPC 3.2.2 (32Bit + 64bit)
CPU-Target: 64Bit
Wohnort: Berlin

Re: ListView anklicken

Beitrag von Thandor »

Direkt in Dateien arbeitet man nicht. Die Festplatte ist KEIN Arbeitsspeicher.
Das übliche vorgehen ist:
- Datei in den Arbeitsspeicher lesen
- Datei im Arbeitsspiecher bearbeiten
- Datei aus dem Arbeitsspeicher auf die Festplatte zurückschreiben.

Wenn die Datei zu groß für den Arbeitsspeicher ist, dann die Datei Häpchenweise (Seitenweise) einlesen.
Wenn mann die Datei kontnuierlich lesen und verarbeiten möchte (also nicht hin und herspringen möchte), dann über einen FileStream nachdenken.

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 593
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: ListView anklicken

Beitrag von Niesi »

Thandor hat geschrieben: Di 1. Nov 2022, 10:08 Direkt in Dateien arbeitet man nicht. Die Festplatte ist KEIN Arbeitsspeicher.
Das übliche vorgehen ist:
- Datei in den Arbeitsspeicher lesen
- Datei im Arbeitsspiecher bearbeiten
- Datei aus dem Arbeitsspeicher auf die Festplatte zurückschreiben.

Wenn die Datei zu groß für den Arbeitsspeicher ist, dann die Datei Häpchenweise (Seitenweise) einlesen.
Wenn mann die Datei kontnuierlich lesen und verarbeiten möchte (also nicht hin und herspringen möchte), dann über einen FileStream nachdenken.
.

Wie muss ich mir das "häppchenweise" bearbeiten vorstellen? Wenn ich eine Datei NICHT komplett in den Arbeitsspeicher lade oder eben NICHT per FileStream bearbeite - wie kann ich das "Häppchen" aus der Mitte der Datei dann so abspeichern, dass die Datei dann komplett und korrekt auf der SSD gespeichert ist?
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Antworten