Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
Delphi XE6 Starter
|
AW: wo kommt das type hin?
10. Jun 2010, 12:18
So ich hab mal optimiert...
Delphi-Quellcode:
procedure TForm1.prepaire_data;
var
alter_wert,i,a,temp_wert,Kanal1_Counter:integer;
temp_data,old_data:Array[0..8] of integer;
begin
Kanal1_Counter := 0;
for i := 0 to gesamt_einheit - 1 do
begin
temp_wert := store_Buffer[i];
for a := 0 to 7 do
begin
temp_data[a] := temp_wert mod 2;
temp_wert := temp_wert div 2;
end;
if temp_data[0] <> old_data[0] then begin //Prüfen ob sich der wert geändert hat.
Kanal1[Kanal1_Counter].Pegel := temp_data[0]; //Wenn ja, neuer Wert (0 oder 1) in den Pegel von Kanal1 schreiben
Kanal1[Kanal1_Counter].Index := i; //Index übergeben damit ich weiss wo ich zeichnen muss
Kanal1_Counter := Kanal1_Counter + 1; //Kanal1 Counter erhöhen
end;
Move(temp_data[0], old_data[0], Length(temp_data)); //Array kopieren damit man anschliesend vergleichen kann
end;
Kanal1[Kanal1_Counter].Pegel := 2; //Terminierung des Arrays da Pegel nur 0 oder 1 sein kann
end;
Frage: Kann man da noch was optimieren?
Weil ich müsste ja eigentlich für jeden kanal wieder das selbe machen wie für kanal1
Nochmal was Optimiert:
Delphi-Quellcode:
procedure TForm1.draw_raw_data(drawspace:TImage;color:TColor;data_in:Array of TKanal);
var
counter:integer;
begin
counter := 0;
repeat
draw_up(drawspace,color,((data_in[counter].Index - start) div ein_pixel));
if (data_in[counter-1].Pegel) = 1 then draw_line(drawspace,color,(data_in[counter-1].Index-start) div ein_pixel,(data_in[counter].Index - start) div ein_pixel,5);
if (data_in[counter-1].Pegel) = 0 then draw_line(drawspace,color,(data_in[counter-1].Index-start) div ein_pixel,(data_in[counter].Index - start) div ein_pixel,25);
counter := counter + 1;
until (data_in[counter].Pegel = 2); //Prüfen ob array ende erreicht ist.
if data_in[counter -1].Pegel = 1 then draw_line(drawspace,color,(data_in[counter-1].Index-start)div ein_pixel,gesamt_einheit div ein_pixel,5);
if data_in[counter -1].Pegel = 0 then draw_line(drawspace,color,(data_in[counter-1].Index-start)div ein_pixel,gesamt_einheit div ein_pixel,25); //Letzte linie erzeugen
end;
EDIT:
Delphi-Quellcode:
type
TKanal = record
Pegel: Byte;
Index: integer;
end;
Kanal1:Array[0..10000] of TKanal;
Werde nun testen ob es nun kein verlust mehr gibt
Geändert von hedie (10. Jun 2010 um 12:21 Uhr)
Grund: was vergessen
|
|
Zitat
|