![]() |
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:
In din Objekten von TFeld werden die X- und Y-Koordinaten geschrieben.
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. 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 |
Re: Koordinaten als Datei speichern
Obwohl du OOP testen willst ;) empfehle ich dir den sogenannten TPoint:
Delphi-Quellcode:
Aber ansonsten wäre nur das Delphi spezifische Attribut "property" dort erwähnenswert.
TPoint = record
X, Y : Integer; end;
Delphi-Quellcode:
Ansonsten Delphi/DP-Hilfe ;)
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; MfG xZise |
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 ? |
Re: Koordinaten als Datei speichern
Also ich würde das ganze mit einer String-Liste realisieren.
Delphi-Quellcode:
Der Nachteil ist, dass du die Datenpaare einfach wieder mit String befehlen auseinander schnippseln must.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)); Gruss jjep |
Re: Koordinaten als Datei speichern
Was ist denn die Pixelgröße einer Koordinate? :gruebel:
|
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 |
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?
|
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 |
Re: Koordinaten als Datei speichern
Du meinst die Auflösung. Wozu sollte man die speichern wollen, die ist doch sowieso vom Ausgabemedium abhängig.
|
Re: Koordinaten als Datei speichern
Zitat:
KP |
Re: Koordinaten als Datei speichern
Wenn ich in Delphi etwas zeichnen will, kann ich das ja über die Klasse TPaintBox realisieren.
Wenn ich dort etwas zeichne/male färbe ich ja Koordinaten ein. Jedoch kann ich bestimmen, wie weit die Farbe um den Mittelpunkt herum laufen soll. Also statt einem dünnen blauen Punkt, einen dicken blauen Punkt. Ihr versteht? Wenn ich also nun was gezeichnet habe, habe ich eine Liste von x/y-Koordinaten mit eventuell unterschiedlichen Farb- und Größenangaben. Und genau diese Liste mit den Inhalten X,Y,Farbe und Größe will ich speichern und laden können. Bis dato beschäftige ich mich mit dem Abgreifen von Mausbewegungen und deren Speicherung. Darauf wollte ich dann dass Malprogramm aufbauen. Also erst klein anfangen und dann die Baustelle erweitern. Daher wollte ich beim Erstellen von Listen flexibel bleiben um ggf. weitere Attribute leicht aufnehmen zu können. Das mit der String-Liste wäre eine weitere Möglichkeit und die Auswertung der Daten (ob nun mit STrich oder ohne) ist nicht das Problem. Ich denke mir halt dass es vll. noch eine bessere und konfortablere Möglichkeit gibt - sprich OOP. |
Re: Koordinaten als Datei speichern
Zitat:
![]() Zitat:
Zitat:
Delphi-Quellcode:
TlxPoint = record
X, Y : Integer; pixelSize : Integer; clr : TColor; end; Zitat:
MfG xZise |
Re: Koordinaten als Datei speichern
Hallo.
ich werde mich ab Donnerstag mit dem TPoint Record näher befassen. Mich hat das nur etwas verwundert weil ich bei Wikipedia gelesen habe, dass Records nur 3 Spalten beinhalten dürfen - was für mich wenig Sinn gemacht hat. Records sind doch, so weit ich das verstanden habe, vergleichbar mit Tabellen, oder ? Und dementsprechend kann ich auf das TPoint-Objekt verzichten und mein eigenes Record schreiben, oder ?
Delphi-Quellcode:
Wie gesgat, ich werde mich erstmal mit Records beschäftigen und sollte das mit der Speicherung in Records funktionieren, melde ich ich mich wieder um ggf. Fragen zur Speicherung in Dateien zu stellen. ;)
type
TOwnRecord : record X : integer; Y : integer; Size : integer; Color : TColor; Vielen Dank für Eure Hilfe. Wäre sonst nie auf den Gedanken gekommen, Records zu verwende bzw. mich damit zu beschäftigen. Mit freundlichen Grüßen lx |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz