Einzelnen Beitrag anzeigen

hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#18

AW: wo kommt das type hin?

  Alt 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
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch

Geändert von hedie (10. Jun 2010 um 12:21 Uhr) Grund: was vergessen
  Mit Zitat antworten Zitat