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
Antwort Antwort
Seite 1 von 3  1 23      
hedie

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

wo kommt das type hin?

  Alt 9. Jun 2010, 18:28
Hallo

Ich möchte einer Procedure ein Global definiertes Array übergeben.

Ich habe gelesen, das ich dazu ein Type definieren muss.

So etwa:

type TArray: array[1..5] of Integer; Doch leider weiss ich nicht, wo ich diese Zeile hinpacken soll.
Es wird dauernd rot unterstrichen...

Danke für die Hilfe
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
DenSchub

Registriert seit: 4. Jun 2006
Ort: Balingen
209 Beiträge
 
#2

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 18:33
Richtig würde es lauten:
TArray = array[1..5] of Integer; Und es kommt dort hin, wo auch TForm1 = class(TForm) zu finden ist. Wahlweise davor oder nach dem entsprechenden end;
[edit]Wenn der Inhalt global verfügbar sein soll, auch daran denken, ihn in der var -Sektion zu definieren.[/edit]
[edit2]Übrigens: Ein Typ zu definieren ist eigentlich gar nicht notwendig, wenn es nur um die Globalisierung geht.[/edit2]

Ich liebe inline-codes. *pfeif*
Dennis Schubert
Ground Zero is nichts gegen mein Schreibtisch.

Geändert von DenSchub ( 9. Jun 2010 um 18:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 18:37
Naja, es kommt immer drauf an, wie die Sichtbarkeit aussehen soll. Du kannst es global machen, also zwischen dem interface und implementation-Keyword, oder auch nur innerhalb einer Klasse, oder auch innerhalb einer Methode definieren
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 18:37
Und vorallem wenn es sich um globale Sachen (Typen/Konstanten/Variablen) handelt, dann sollte man diesen auch einen orgendlichen Namen verpassen.

TArray kennen neuer Delphi z.B. schon und dieses stimmt mit deiner Definition nicht überein.

Und dann ist es immer gut, wenn man seine verwendete Delphiversion angibt,
damit man auch passende Tipps geben kann.


Ab Delphi 2006, bzw. TDE kann man auch alles schön zusammenhalten.

Delphi-Quellcode:
unit MeineGlobalenSachen;

interface
  type
    TMeineGlobaleSammlung = class
    public
      type TIntegerArray10 = array[1..10] of Integer;
    private
      FVariable: array of Integer;
      function MeinSetter(idx: Integer; i: Integer);
      function MeinGetter(idx: Integer): Integer;
    public
      GloableVariable: TIntegerArray10;

      property MeinArray[idx: Integer]: Integer
        read MeinGetter write MeinSetter;
    end;

  var MeineGlobaleSammlung: TMeineGlobaleSammlung;

implementation

initialization
  MeineGlobaleSammlung := TMeineGlobaleSammlung.Create;
finalization
  MeineGlobaleSammlung.Free;
end.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Jun 2010 um 18:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 18:39
TArray kennen neuer Delphi z.B. schon und dieses stimmt mit deiner Definition nicht überein.
Wobei das aufgrund verschiedener Namespaces in sehr wenigen Umständen okay wäre, aber du hast da auf jeden Fall recht. Sinnvolle Namen sind ein absolutes DO.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
hedie

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

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 19:26
Vielen Dank

es hat teilweise geklappt...

Ich hab folgendes Definiert:

Delphi-Quellcode:
MyData = array[1..100000] of integer;

public
data1,data2,data3,data4,data5,data6,data7,data8: MyData;
doch leider "verlieren" gewisse arrays auf unerklärliche weise Daten
Woran könnte dies liegen?
Wenn ich Sie nach dem befüllen noch kurz verwende gehen einige nicht gleich verloren

Edit: Ich verwende Delphi2007 Enterprise
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch

Geändert von hedie ( 9. Jun 2010 um 19:26 Uhr) Grund: Delphi Version
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 19:29
Wir bräuchten allgemein wohl etwas mehr Code, sodass wir helfen können, denn der Kontext, in dem du das verwendest erschließt sich so keinem.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
hedie

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

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 19:33
Gut...

Hier mein gesamter Code


Funktion: Ich empfange von einer Computer Hardware Dezimal Zahlen von 0 - 255
Diese wandle ich nach Binär und stelle die 1en und 0en auf einer Oberfläche dar
Das ganze ist dan ein LogicAnalyzer

In den Arrays Daten1-Daten8 steht wo eine 1 oder eine 0 ist bezogen auf die gesamte anzahl an gesammelten daten

Beispiel
Delphi-Quellcode:
Data[1] := 1 //Eine Eins
Data[2] := 4112 //Steht an stelle 4112 des gesamten
Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, StdCtrls, jpeg, ImgList, ComCtrls;

type
  MyData = array[1..100000] of integer;
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    OpenLogic1: TMenuItem;
    About1: TMenuItem;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Image9: TImage;
    Shape1: TShape;
    ScrollBar1: TScrollBar;
    ImageList1: TImageList;
    Label9: TLabel;
    Label10: TLabel;
    Image12: TImage;
    Image13: TImage;
    Image14: TImage;
    Image15: TImage;
    Image16: TImage;
    Image17: TImage;
    Image18: TImage;
    ProgressBar1: TProgressBar;
    ScrollBar2: TScrollBar;
    Label11: TLabel;
    About2: TMenuItem;
    KeineAktualisierungverfgbar1: TMenuItem;
    Label1: TLabel;
    Label12: TLabel;
    update_check: TTimer;
    marker1: TPanel;
    dispmarker1: TLabel;
    Button1: TButton;
    marker2: TPanel;
    dispmarker2: TLabel;
    GroupBox1: TGroupBox;
    dispdmarker: TLabel;
    dispfreq: TLabel;
    ComboBox1: TComboBox;
    Button2: TButton;
    Label13: TLabel;
    ListBox1: TListBox;
    Button3: TButton;
    Label14: TLabel;
    Memo1: TMemo;
    Button5: TButton;
    ComboBox2: TComboBox;
    procedure draw_raw_data(drawspace:TImage;color:TColor; data_in:MyData);
    procedure prepaire_data;
    procedure refresh_all;
    procedure FormCreate(Sender: TObject);
    procedure About2Click(Sender: TObject);
    procedure KeineAktualisierungverfgbar1Click(Sender: TObject);
    procedure update_checkTimer(Sender: TObject);
    procedure refresh_marker(X:integer;marker:TPanel;display:TLabel);
    procedure refresh_times;
    procedure marker1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure marker2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormShow(Sender: TObject);
    procedure ComboBox1DropDown(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ScrollBar2Change(Sender: TObject);
    procedure clear_disp(disp:TImage);
    procedure clear_all;
    procedure ScrollBar1Change(Sender: TObject);


  private
    { Private-Deklarationen }
  public

    version_t:string;
    version,timems,timebasems,timeleft,timeright,marker1ms,marker2ms:integer;
    data1,data2,data3,data4,data5,data6,data7,data8: MyData;

  end;

var
  Form1: TForm1;

implementation



uses about, update,D2XXUnit, CfgUnit;




var
 DevicePresent : Boolean;
 Selected_Device_Serial_Number : String;
 Selected_Device_Description : String;
 Store_Buffer : Array[0..512000] of byte; //512kb Speicher.
 Store_Buffer_Count:integer;
 gesamt_einheit:integer;
 ein_pixel,buffer_size,start,stop:integer;
 main_color:tcolor;


{$R *.dfm}

procedure TForm1.refresh_times;
begin
  timeleft := ((timems div ScrollBar1.Max) * ScrollBar1.Position) - timebasems;
  timeright := ((timems div ScrollBar1.Max) * ScrollBar1.Position);
  Label9.Caption := inttostr(timeleft)+'ms';
  Label10.Caption := inttostr(timeright)+'ms';
end;

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
  start := ScrollBar1.Position;
  Label9.Caption := inttostr(start);
  stop := ScrollBar1.Position + (gesamt_einheit div ScrollBar2.Position);
  Label10.Caption := inttostr(stop);
  clear_all;
  refresh_all;
  
end;

procedure TForm1.ScrollBar2Change(Sender: TObject);
begin

  ScrollBar1.Max := (gesamt_einheit);
  Label11.Caption := inttostr(gesamt_einheit div ScrollBar2.Position);
  ein_pixel := (gesamt_einheit div ScrollBar2.Position) div Image9.Width;
  clear_all;
  refresh_all;
end;

procedure TForm1.refresh_marker(X:integer;marker:TPanel;display:TLabel);
var mslen:integer;
begin
  if ((marker.Left + X) > (Image9.Left - 1)) and ((marker.Left + X) < ((Image9.Left + Image9.Width) +1)) then begin
    mslen := (timebasems * timems div (Image9.width));
    display.Caption := inttostr( ( ((marker.Left - Image9.Left) * mslen) div 10000) + timeleft + 1)+'ms';
    marker.Left := marker.Left + X;
    display.Left := display.Left + X;
    if marker.Name = 'marker1then marker1ms := ( ((marker.Left - Image9.Left) * mslen) div 10000) + timeleft + 1;
    if marker.Name = 'marker2then marker2ms := ( ((marker.Left - Image9.Left) * mslen) div 10000) + timeleft + 1;
    dispdmarker.Caption := 'Delta ms: '+inttostr(marker2ms-marker1ms)+'ms';
    dispfreq.Caption := 'Freq. Hz: '+ inttostr(1000 div ((marker2ms-marker1ms)))+'Hz';
  end;

end;

procedure draw_up(pointer:TImage;color:TColor;x:integer);
begin
 with pointer.Canvas do begin
    Pen.Color := color;
    Pen.Width := 1;
    MoveTo(x,25);
    LineTo(x,5);
    //color := clBlack;
 end;
 //showmessage(inttostr(x));
end;

procedure draw_down(pointer:TImage;color:TColor;x:integer);
begin
 with pointer.Canvas do begin
    Pen.Color := color;
    Pen.Mode := pmMerge;
    Pen.Width := 1;
    MoveTo(x,5);
    LineTo(x,25);
 end;

end;

procedure draw_line(pointer:TImage;color:TColor;x1,x2,y:integer);
begin
 with pointer.Canvas do begin
    Pen.Color := color;
    Pen.Width := 1;
    MoveTo(x1,y);
    LineTo(x2,y);
 end;
end;


procedure TForm1.About2Click(Sender: TObject);
begin
  Form2.ShowModal;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if dispmarker1.Visible = true then begin
    dispmarker1.Visible := false;
    dispmarker2.Visible := false;
    marker1.Visible := false;
    marker2.Visible := false;
  end
  else begin
    dispmarker1.Visible := true;
    dispmarker2.Visible := true;
    marker1.Visible := true;
    marker2.Visible := true;
  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
If Open_USB_Device_By_Serial_Number(Selected_Device_Serial_Number) = FT_OK then begin
  FT_Current_Parity := 1;
  FT_Current_StopBits := 0;
  FT_Current_DataBits := 8;
  Set_USB_Device_DataCharacteristics;
  FT_Current_Baud := 3000000;
  Set_USB_Device_BaudRate;
  Label13.Caption := 'Status: Verbunden mit: ' + Selected_Device_Serial_Number;
end
else begin
  Label13.Caption := 'Status: Fehler beim verbinden mit: ' + Selected_Device_Serial_Number;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin


  ProgressBar1.Max := gesamt_einheit;
  ProgressBar1.Position := 0;
  repeat
  Read_USB_Device_Buffer(buffer_size);
  Move(FT_In_Buffer[0], Store_Buffer[Store_Buffer_Count], Length(FT_In_Buffer));
  Inc(Store_Buffer_Count, buffer_size);
  ProgressBar1.Position := ProgressBar1.Position + buffer_size;
  Label14.Caption := 'Saved: '+inttostr(ProgressBar1.Position);
  Application.ProcessMessages;
  until ProgressBar1.Position = gesamt_einheit;
end;

procedure TForm1.refresh_all;
begin
  draw_raw_data(Image9,main_color,data1);
  draw_raw_data(Image12,main_color,data2);
  draw_raw_data(Image13,main_color,data3);
  draw_raw_data(Image14,main_color,data4);
  draw_raw_data(Image15,main_color,data5);
  draw_raw_data(Image16,main_color,data6);
  draw_raw_data(Image17,main_color,data7);
  draw_raw_data(Image18,main_color,data8);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  clear_all;
  prepaire_data;
  refresh_all;
end;

{procedure doFoo2(const  a: Array of Byte);
var
i:integer;
value_old:integer;
data_counter:integer;
begin
  i := 0;
  data_counter := 1;
  value_old := 500;
  repeat
  if a[i] <> value_old then  begin
    Form1.Memo1.Lines.Add(inttostr(a[i])+','+inttostr(i)+',');
    if(a[i] = 1) then begin
      Form1.data[data_counter] := 1;
      Form1.data[data_counter + 1] := i;
      data_counter := data_counter + 2;
    end;
    if(a[i] = 0) then begin
      Form1.data[data_counter] := 0;
      Form1.data[data_counter + 1] := i;
      data_counter := data_counter + 2;
    end;
    value_old := a[i];
  end;
  i := i + 1;
  until gesamt_einheit <= i;
  Form1.data[data_counter] := 748575;
end;        }


procedure TForm1.ComboBox1Click(Sender: TObject);
begin
  Selected_Device_Serial_Number := ListBox1.Items.Strings[ComboBox1.ItemIndex];
  //Showmessage(Selected_Device_Serial_Number);
end;

procedure TForm1.ComboBox1DropDown(Sender: TObject);
var S:String; DeviceIndex : DWord; I : Integer; LV : TListItem;
begin
ComboBox1.Items.clear; //Auswahl löschen
ListBox1.Clear; //Geräte ID's löschen
GetFTDeviceCount;
S := IntToStr(FT_Device_Count);
DeviceIndex := 0;
If FT_Device_Count > 0 then
  Button2.Enabled := true;
  For I := 1 to FT_Device_Count do
  Begin
  GetFTDeviceDescription ( DeviceIndex );
  ComboBox1.Items.Add(FT_Device_String);
  GetFTDeviceSerialNo( DeviceIndex );
  ListBox1.Items.Add(FT_Device_String);
  DeviceIndex := DeviceIndex + 1;
  End;

end;

procedure TForm1.prepaire_data;
  var
alter_wert,counter,i,i2,temp_wert,cd1,cd2,cd3,cd4,cd5,cd6,cd7,cd8:integer;
vorheriges_x,aktuelle_flanke:integer;
linie_zeichnen:boolean;
temp_data,old_data:Array[0..8] of integer;
begin

  i := 0;
  i2:= 0;
  counter := 1;
  vorheriges_x := 0;
  aktuelle_flanke := 0;
  cd8 := 1;
  cd7 := 1;
  cd6 := 1;
  cd5 := 1;
  cd4 := 1;
  cd3 := 1;
  cd2 := 1;
  cd1 := 1;

  repeat

    //Form1.Memo1.Lines.Add(inttostr(Store_Buffer[i])+',Bin:');
    temp_data[0] := Store_Buffer[i] mod 2;
    temp_wert := Store_Buffer[i] div 2;
    temp_data[1] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[2] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[3] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[4] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[5] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[6] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[7] := temp_wert mod 2;



    if temp_data[0] <> old_data[0] then begin
      data1[cd1] := temp_data[0];
      data1[cd1+1] := i;
      cd1 := cd1 + 2;
    end;
    if temp_data[1] <> old_data[1] then begin
      data2[cd2] := temp_data[1];
      data2[cd2+1] := i;
      cd2 := cd2 + 2;
    end;
    if temp_data[2] <> old_data[2] then begin
      data3[cd3] := temp_data[2];
      data3[cd3+1] := i;
      cd3 := cd3 + 2;
    end;
    if temp_data[3] <> old_data[3] then begin
      data4[cd4] := temp_data[3];
      data4[cd4+1] := i;
      cd4 := cd4 + 2;
    end;
    if temp_data[4] <> old_data[4] then begin
      data5[cd5] := temp_data[4];
      data5[cd5+1] := i;
      cd5 := cd5 + 2;
    end;
    if temp_data[5] <> old_data[5] then begin
      data6[cd6] := temp_data[5];
      data6[cd6+1] := i;
      cd6 := cd6 + 2;
    end;
    if temp_data[6] <> old_data[6] then begin
      data7[cd7] := temp_data[6];
      data7[cd7+1] := i;
      cd7 := cd7 + 2;
    end;
    if temp_data[7] <> old_data[7] then begin
      data8[cd8] := temp_data[7];
      data8[cd8+1] := i;
      cd8 := cd8 + 2;
    end;
    Move(temp_data[0], old_data[0], Length(temp_data)); //Array kopieren
    i := i + 1;

  until gesamt_einheit <= i;

  data1[cd1] := 5;
  data2[cd2] := 5;
  data3[cd3] := 5;
  data4[cd4] := 5;
  data5[cd5] := 5;
  data6[cd6] := 5;
  data7[cd7] := 5;
  data8[cd8] := 5;

  {cd1 := 1;
    repeat

    Form1.Memo1.Lines.Add(inttostr(data1[cd1]));
    Form1.Memo1.Lines.Add(inttostr(data1[cd1+1]));
    cd1 := cd1 + 2;
    until data1[cd1] = 5;
                                     }

    cd1 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data1[cd1]));
    Form1.Memo1.Lines.Add(inttostr(data1[cd1+1]));
    cd1 := cd1 + 2;
    until (data1[cd1] = 5) or (data1[cd1-2] = 5);

    cd2 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data2[cd2]));
    Form1.Memo1.Lines.Add(inttostr(data2[cd2+1]));
    cd2 := cd2 + 2;
    until (data2[cd2] = 5) or (data2[cd2-2] = 5);

    cd3 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data3[cd3]));
    Form1.Memo1.Lines.Add(inttostr(data3[cd3+1]));
    cd3 := cd3 + 2;
    until (data3[cd3] = 5) or (data3[cd3-2] = 5);

    cd4 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data4[cd4]));
    Form1.Memo1.Lines.Add(inttostr(data4[cd4+1]));
    cd4 := cd4 + 2;
    until (data4[cd4] = 5) or (data4[cd4-2] = 5);

    cd5 := 1;
    repeat
    Form1.Memo1.Lines.Add(inttostr(data5[cd5]));
    Form1.Memo1.Lines.Add(inttostr(data5[cd5+1]));
    cd5 := cd5 + 2;
    until (data5[cd5] = 5) or (data5[cd5-2] = 5);

    Form1.Memo1.Lines.Add(' |-| ');

  {repeat
  if Store_Buffer[i] <> alter_wert then  begin
    Form1.Memo1.Lines.Add(inttostr(Store_Buffer[i])+','+inttostr(i)+',');

    if(Store_Buffer[i] = 1) then begin
      data[counter] := 1;
      data[counter + 1] := i;
      counter := counter + 2;
    end;

    if(Store_Buffer[i] = 0) then begin
      data[counter] := 0;
      data[counter + 1] := i;
      counter := counter + 2;
    end;
    alter_wert := Store_Buffer[i];
  end;
  i := i + 1;
  until gesamt_einheit <= i;
  data[counter] :=  748575;    }

end;

procedure TForm1.draw_raw_data(drawspace:TImage;color:TColor;data_in:MyData);
var
counter:integer;
begin

  counter := 1;
  repeat
    draw_up(drawspace,color,((data_in[counter+1] - start) div ein_pixel));
    if data_in[counter - 2] = 1 then draw_line(drawspace,color,(data_in[counter-1]-start) div ein_pixel,(data_in[counter+1] - start) div ein_pixel,5);
    if data_in[counter - 2] = 0 then draw_line(drawspace,color,(data_in[counter-1]-start) div ein_pixel,(data_in[counter+1] - start) div ein_pixel,25);
    counter := counter + 2;
  until (data_in[counter] = 5) or(data_in[counter-2] = 5) ;
  if data_in[counter - 2] = 1 then draw_line(drawspace,color,(data_in[counter-1]-start)div ein_pixel,gesamt_einheit div ein_pixel,5);
  if data_in[counter - 2] = 0 then draw_line(drawspace,color,(data_in[counter-1]-start)div ein_pixel,gesamt_einheit div ein_pixel,25);

end;

procedure TForm1.clear_disp(disp:TImage);
begin
  with disp.canvas do begin
  brush.Color:=$00575048;
  brush.Style:=bsSolid;
  rectangle(0,-1,disp.Width+2,disp.Height+2);
  end;
end;

procedure TForm1.clear_all;
begin
  clear_disp(Form1.Image9);
  clear_disp(Form1.Image12);
  clear_disp(Form1.Image13);
  clear_disp(Form1.Image14);
  clear_disp(Form1.Image15);
  clear_disp(Form1.Image16);
  clear_disp(Form1.Image17);
  clear_disp(Form1.Image18);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

version_t := '1.0.0.21';
form1.DoubleBuffered := true;


end;

procedure TForm1.FormShow(Sender: TObject);
begin
  FT_Enable_Error_Report := true; // Error reporting = on
  gesamt_einheit := 50000; //Anzahl Samples
  buffer_size := 1000; //Anzahl Samples pro übertragung
  start := 0;
  stop := gesamt_einheit;
  ein_pixel := gesamt_einheit div Image9.Width;
  main_color := clWhite;
  //DevicePresent
end;

procedure TForm1.KeineAktualisierungverfgbar1Click(Sender: TObject);
begin
  Form3.Showmodal;
end;

procedure TForm1.marker1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  refresh_marker(X,marker1,dispmarker1);
end;

procedure TForm1.marker2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  refresh_marker(X,marker2,dispmarker2);
end;

procedure TForm1.update_checkTimer(Sender: TObject);
begin
  update_check.Enabled := false;

  if paramstr(1) = 'updatethen begin
    deletefile(extractfilepath(paramstr(0))+'old.exe');
    showmessage('Herzlichen Glückwunsch... Update erfolgreich! Version: ' + version_t);
  end;

end;

end.
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
hedie

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

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 20:43
Gibt es eine beschränkung für die grösse von arrays?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#10

AW: wo kommt das type hin?

  Alt 9. Jun 2010, 20:53
Wenn Du jetzt noch dazu schreibst, wo Dir konkret Werte "verloren" gehen, könnte man sich das genauer anschauen. Das Programm ist allerdings für meinen Geschmack durch zu viel copy and paste reichlich unübersichtlich.

Man sollte beim Erstellen von Programmen wo es geht Schleifen und arrays verwenden, statt mittels copy and paste gewaltige Codemengen zu produzieren - so ein Programm ist nämlich wesentlich fehleranfälliger und schwerer zu warten, und die Fehlersuche ist viel mühsamer, weil einfach viel mehr Code zum Überprüfen da ist.

Also z.B. statt

Delphi-Quellcode:
 temp_data[0] := Store_Buffer[i] mod 2;
    temp_wert := Store_Buffer[i] div 2;
    temp_data[1] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[2] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[3] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[4] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[5] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[6] := temp_wert mod 2;
    temp_wert := temp_wert div 2;
    temp_data[7] := temp_wert mod 2;
einfach

Delphi-Quellcode:
    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;
Wenn Du statt data1, data2, data3... und cd1, cd2, cd3...
Felder Data: array [1..8] und cd: array[1..8]
verwendest, und den immer wiederkehrenden Code in eine Schleife legst, würde das Program um einiges übersichtlicher werden.

Noch ein nono:
if dispmarker1.Visible = true then .

Statt dessen:
if dispmarker1.Visible then .

Es würde natürlich auch so gehen:
if ((((dispmarker1.Visible = true) = true) = true) = true) then .

Sollte die repeat-Schleife in prepaire_data nicht doch eher eine for Schleife sein - ich meine, steht die Anzahl der Durchläufe nicht schon zu Schleifenbeginn fest? In dem Fall entspricht die Verwendung einer repeat Schleife nämlich einer Täuschung des Gegners


edit: Irgendwie versteht die Forumsoftware meine delphi tags nicht

Geändert von idefix2 ( 9. Jun 2010 um 20:57 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 17:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz