Ich fülle die TSerie von TChar mit sehr kleine Werten (zB 0.000000015), da wird die Grid-Beschriftung mit 2E-8 angezeigt.
Kann man die auch als 0.00000002 haben ?
TChar Grid-Beschriftung
-
- Beiträge: 6911
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
TChar Grid-Beschriftung
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: TChar Grid-Beschriftung
Die Achse hat eine Eigenschaft Marks, in der wiederum findest du "Format", das du auf "%0:.8f" setzen könntest - das "f" unterdrückt die Exponentialdarstellung. Allerdings sind Diagramme mit dieser Art von Zahlendarstellung meiner Meinung nach sehr schwer zu lesen. Auch befürchte ich, dass die Beschriftungsroutine bei so kleinen Werten wegen Rundungsfehlern ins Schleudern kommt. Wenn du die Exponentialdarstellung nicht magst, würde ich vorschlagen, die Werte in eine andere Einheit umzurechnen (also z.B. nm oder µm statt m), oder einen konstanten Faktor abzuspalten.
-
- Beiträge: 6911
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: TChar Grid-Beschriftung
Das habe ich geändert, es ist besser so, anstelle von s, hab ich jetzt µs.die Werte in eine andere Einheit umzurechnen (also z.B. nm oder µm statt m)
Ich wollte mal testen, wie linear, das ein TMemoryStream ist.
Natürlich habe ich die grösse des Stream ein bisschen übertrieben, das PC war fast 10min beschäftigt.
Was ich aber staunte, es gab nur einen Ausreiser, welcher über 30 µs war.
Dazu habe ich folgen Test geschrieben:
Code: Alles auswählen
type
TMesswert = record
ma, mm: single;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Serie: TSerie;
ms: TMemoryStream;
za, zn, z: TDateTime;
i: integer;
mw:TMesswert;
begin
Serie := TSerie.Create(Chart1);
Serie.LinePen.Color := clRed;
Chart1.AddSeries(Serie);
ms := TMemoryStream.Create;
za := Now;
for i := 0 to 1000 * 1000 * 1000 do begin
zn := now;
z := zn - za;
ms.Write(Pointer(mw), SizeOf(mw));
if z > 0 then begin
Serie.AddY(z * 1000 * 1000); // in µs
end;
za := zn;
end;
ms.SaveToFile('test.dat');
ms.Free;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: TChar Grid-Beschriftung
Verwende lieber TLineSeries statt TSerie. "TSerie" ist uralt und ich sollte dieses Grümpel wirklich mal entfernen...
Du kannst eine Series übrigens auch zur Designzeit erzeugen, indem du auf dem Chart doppelklickst. Dann hast du alle Properties übersichtlich im Objekt-Inspektor zur Verfügung.
Du kannst eine Series übrigens auch zur Designzeit erzeugen, indem du auf dem Chart doppelklickst. Dann hast du alle Properties übersichtlich im Objekt-Inspektor zur Verfügung.
-
- Beiträge: 6911
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: TChar Grid-Beschriftung
Jetzt weis ich wieso, das du den Code aus dem Wiki entfernt hast.Verwende lieber TLineSeries statt TSerie. "TSerie" ist uralt und ich sollte dieses Grümpel wirklich mal entfernen...
Dann funktioniert TSeries nur noch aus Kompatibilitätsgründen, und TASeries ist noch älter.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot