AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

wo kommt das type hin?

Ein Thema von hedie · begonnen am 9. Jun 2010 · letzter Beitrag vom 10. Jun 2010
 
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, 11: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 11:21 Uhr) Grund: was vergessen
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 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