Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Koordinaten als Datei speichern (https://www.delphipraxis.net/100686-koordinaten-als-datei-speichern.html)

-lx- 2. Okt 2007 14:37


Koordinaten als Datei speichern
 
Hallo.


Ein Programm liest die Zeigerkoordinaten der Maus alle 0,03 Sekunden. Dabei werden Koordinatenpaare, die doppelt vorkommen, nicht mit aufgenommen.
Ich hab lange (relativ) überlegt wie ich die ganzen Koordinaten speichern soll.
Da ohnehin etwas Übung in OOP nicht schaden konnte, habe ich dis TList-Klasse gewählt und eine eigene TFeld-Klasse geschrieben.

Delphi-Quellcode:
unit Unit2;

interface

type
  TFeld = class
    private
      X : Integer;
      Y : Integer;
    public
      constructor create;
      procedure SetzeX (x : integer);
      procedure SetzeY (y : integer);
      function GibX : Integer;
      function GibY : Integer;
      destructor destroy;
    end;

implementation

constructor TFeld.create;
begin
x:= 0;
y:= 0;
end;

procedure TFeld.SetzeX (x : Integer);
begin
  self.X:= x;
end;

procedure TFeld.SetzeY (y : integer);
begin
  self.Y:= y;
end;

function TFeld.GibX : integer;
begin
  result:= X;
end;

function TFeld.GibY : integer;
begin
  result:= Y;
end;

destructor TFeld.destroy;
begin
  self.Free;
end;

end.
In din Objekten von TFeld werden die X- und Y-Koordinaten geschrieben.
Jene Objekte werden wiederum von einem Objekt der Klasse TList verwaltet. Über diese wird auch auf den Inhalt zugegriffen.


1. Frage: Ist dies eine sinnvolle Art der Datenspeicherung?

2. Frage: Wenn 1. Frage = true, wie kann ich die ermittelten Daten in eine externe Datei schreiben und diese speichern bzw. dann auch wieder laden, ohne dass ich die ganzen Daten einzeln wieder in die Elemente eintragen muss?
Also ich will quasi das gesamte TList-Objekt mit all seinen TFeld-Objekten und deren Inhalten speichern und diese wieder mit den gleichen Inhalten laden.




Mit freundlichen Grüßen

xZise 2. Okt 2007 14:53

Re: Koordinaten als Datei speichern
 
Obwohl du OOP testen willst ;) empfehle ich dir den sogenannten TPoint:
Delphi-Quellcode:
TPoint = record
  X, Y : Integer;
end;
Aber ansonsten wäre nur das Delphi spezifische Attribut "property" dort erwähnenswert.

Delphi-Quellcode:
TProperty = class(TObject) // Dies wird standardmäßig gesetzt, aber der besseren übersichtlichkeit halber schreibe ich immer "(TObject)" ;)
private
  FAttribut : TAttributTyp;
  procedure SetAttribut(Value : TAttributTyp);
  function SetAttribut : TAttributTyp;
public // Wenn der Eintrag nicht im Objekt Inspektor erscheinen soll!
  property Attribut : TAttributTyp read FAttribut write FAttribut;
  property AttributProcs : TAttributTyp read GetAttribut write SetAttribut
published // Wenn der Eintrag im OI erscheinen soll
  { aus public hier rein kopieren }
end;
Ansonsten Delphi/DP-Hilfe ;)

MfG
xZise

-lx- 2. Okt 2007 15:17

Re: Koordinaten als Datei speichern
 
Hallo und Danke für deine Antwort.


Also die Klasse TPoint bietet die möglichkeit, 2dimensionale Koordinaten zu speichern. Das wäre genau das was ich bräuchte.

Aber wo besteht der Unterschied zu meiner OOP Lösung und zu der Vorgefertigten ?
Wenn ich zum Beisiel noch die Pixelgröße und die Farbe der jeweiligen Koordinate speichern will, ist TPoint ungeeignet.

Oder bietet TPoint auch die Möglichkeit beliebig viele Elemente zu beherbergen ?


Worauf bezieht sich dein zweiter Quelltext? Auf das Problem der Speicherung oder auf TPoint ?

jjep 2. Okt 2007 15:29

Re: Koordinaten als Datei speichern
 
Also ich würde das ganze mit einer String-Liste realisieren.

Delphi-Quellcode:
 
  Liste: TStrings;

  //du kannst die Liste z.B. als TXT-Datei speichern
  Liste.SaveToFile('c:\meineKoordinaten.txt');
 
  //und wieder öffnen
  Liste.LoadFromFile('c:\meineKoordinaten.txt');

  //Die Datenpaare kannst du mit ".add" einfügen und die verschiedenen Parameter z.B. mit einem Strichpunkt trennen
  Liste.Add(IntToStr(x)+';'+IntToStr(y));
Der Nachteil ist, dass du die Datenpaare einfach wieder mit String befehlen auseinander schnippseln must.

Gruss jjep

DeddyH 2. Okt 2007 15:29

Re: Koordinaten als Datei speichern
 
Was ist denn die Pixelgröße einer Koordinate? :gruebel:

KPBecker 2. Okt 2007 15:37

Re: Koordinaten als Datei speichern
 
Hallo, Deddy,

eine Koordinate (besser: ein Koordinatenpaar oder -tripel) kennzeichnet einen Punkt in einem Koordinatensystem und hat mit einer Pixelgröße zunächst einmal gar nichts zu tun.
Wenn ein Punkt z.B. auf einem Bildschirm angesprochen wird, hat der dann eine konkrete Pixelgröße.

KP

DeddyH 2. Okt 2007 15:44

Re: Koordinaten als Datei speichern
 
Was ich meinte, ist, dass eine (Screen-)Koordinate einen genau definierten Punkt (und somit ein Pixel) auf dem Bildschirm definiert. Und ein Pixel ist immer ein Pixel, da kenn ich keine Größenagaben. Oder denke ich falsch?

KPBecker 2. Okt 2007 15:59

Re: Koordinaten als Datei speichern
 
Hallo, Deddy,

Was ich meinte, ist, dass eine (Screen-)Koordinate einen genau definierten Punkt (und somit ein Pixel) auf dem Bildschirm definiert. --> richtig

Und ein Pixel ist immer ein Pixel, --> richtig

da kenn ich keine Größenagaben. --> Bei einem konkreten Gerät hat ein Pixel schon eine definierte Größe (aus Pixel per inch z.B. zu errechnen)

Oder denke ich falsch? --> richtig

DeddyH 2. Okt 2007 16:02

Re: Koordinaten als Datei speichern
 
Du meinst die Auflösung. Wozu sollte man die speichern wollen, die ist doch sowieso vom Ausgabemedium abhängig.

KPBecker 2. Okt 2007 16:12

Re: Koordinaten als Datei speichern
 
Zitat:

Zitat von DeddyH
Du meinst die Auflösung. Wozu sollte man die speichern wollen, die ist doch sowieso vom Ausgabemedium abhängig.

richtig, frag lx

KP


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz