Vielen Danke für die Antwort..-)
Wie gesagt Der Editor war schon programmiert (Nicht von mir.. bin noch ein Anfänger). Mit dem Editor kann man Dateien öffnen und sie mit den Funktionen Suchen/Ersetzen, finden...bearbeiten.
Die erste Aufgabe war : dem Projekt eine neue
Unit hinzufügen und eine Funktion schreiben, die die erste Spalte auf doppelter Eintrag überprüft und wenn ein Doppelter Eintrag vorkommt, eine Fehlermeldung wird ausgegeben. Das war einfach
Ich habe sie programmiert.. (Ob Cells[0,a]=Cells[0,c]).. das war ja einfach. Dann zwei andere Funktionen.
die zweite Aufgabe : Es soll die einzelnen Spalten mit den unterschiedlichen Inhalten der (verschiedenen) Tabellen überprüft werden.
Anforderungen : Eine neue Formular zu erstellen, Da kann man die Regeln definieren (im ComboBox1 : MyRegeln1..MyRegeln9) ist aber egal. im GroupBox sind 15 ComboBoxen mit den gleichen Items (Funktionen). ComboBox1 für Spalte1.. ComboBox2 für Spalte2..usw. Da wird eingestellt welche Überprüfung für welche Spalte..
In der schon programmierten
Unit (unit1) des Editors muss beim Prozedur SpeichernClick die Abfrage gemacht. Denn wenn ich in der Tabelle was bearbeitet habe und im Menu über Datei : Speichern klicke
soll die Überprüfung durchgeführt und eine Fehlermeldung ausgegeben werden.
Leider kann ich das nicht anders machen und muss meine Funktion/Funktionen umprogrammieren dass sie von der Einstellung der ComboBoxen abhängig werden.Und weiss nicht wo ich genau die Abfragen tue..
Zu Unit1 : wo die Funktion/Funktionen sind.
Delphi-Quellcode:
function TMyChek.MyChekGleich(StringGrid:TggStringGrid; Spaltennummer:Integer):Integer ;
//wobei ich die Funktion umbennenen würde, in das was sie macht, nämlich die erste Zeile liefern, //in der was doppelt vorkommt also somit sowas wie:
//function TMyChek.GetFirstRepetition(StringGrid:TggStringGrid; Spaltennummer:Integer):Integer ;
var
a , b ,c : integer;
Inhalt_Check : string;
iDoppeltcounter:integer;
begin
iDoppeltcounter:=0;
Result:=0;//Ich würde sagen, wenn 0 zurückkommt, gibt es keine Doppelten
b:= StringGrid.RowCount; // Anzahl der Zeilen...
for a:=0 to b do begin //müsste meiner Meinung nach b-1 sein
Inhalt_Check:=StringGrid.Cells[Spaltennummer,a]; //Zeile Um 1 erhöhen...
for c:=0 to b do begin //b-1 s.o.?
if Inhalt_Check=StringGrid.Cells[Spaltennummer,c] then begin
//iDoppeltcounter:=iDoppeltcounter+1;
Inc(iDoppeltcounter);
if iDoppeltcounter>1 then begin
Result:=c;
//StringGrid.Selection:=
exit;
iDoppeltcounter:=0;
end;
end;
end;
end;
end;
Zu Unit2 : Code+Design
Delphi-Quellcode:
type
Regel = record
Spalte : Array [1..15] of string ;
Kriterium : string ;
end;
const MaxAnzahlRegeln=9;
const SpaltenAnzahl=15;
var
MyRegeln : Array [1..MaxAnzahlRegeln] of Regel;
Delphi-Quellcode:
type
TFMRegeln = class(TForm)
Label1: TLabel;
...
Label15:TLabel;
...
ComboBox1 :TComboBox;
...
procedure ComboBoxChangeAlg(Sender: TObject);//Hier habe ich in Ereignisse [B]Onchange[/B] 'ComboBoxChangeAlg' für alle ComboBoxen gemacht, damit ich nur ein Prozedur dann habe..
// Zuweisung des ausgewählten Textes der ComboBoxen... Tag:1,2.. 15
procedure TFMRegeln.ComboBoxChangeAlg(Sender: TObject);
begin
MyRegeln[STrToInt(ComboBox1.Text)].Spalte[(Sender as TComboBox).Tag]:=(Sender as TComboBox).Text;
end;
[B]
Zu Unit3, wo alles programmiert ist (nicht von mir).[/B
Delphi-Quellcode:
...
...
///////////////////////////////////////////////////////////////////////////////
////////////////////////// XML File speichern
procedure TForm1.Speichern1Click(Sender: TObject);
var
MyXML:TBATM4XMLClass;
i,r,S:integer;
MyCheck:TMyChek;
iResult:integer;
b : Boolean;
begin
MyCheck:=TMyChek.Create;
iResult:=MyCheck.MyChekGleich(MainGrid);
b:=MyCheck.MyChekFloat('
10');
//b:=MyCheck.MyChekInteger('10.4') ;
if iResult<>-3
then begin
Showmessage('
Doppelter Eintrag : ' + IntTostr(iResult));
Freeandnil(MyCheck);
if UPPERCASE(copy(Filename,length(Filename)-2,3)) = '
TXT'
then begin
SavetextFile();
end else begin
if Fileexists(Filename)
then begin
if UPPERCASE(copy(Filename,length(Filename)-2,3)) = '
TXT'
then begin
SavetextFile();
end;
if UPPERCASE(copy(Filename,length(Filename)-2,3)) = '
XML'
then begin
SaveXMLFile();
end;
end;
end;
end;
...
...
Das sind 3 verschiedene Units.. Was soll ich korrigieren? Wie kann ich diese Variable 'Tag' der ComboBoxen ausnutzen, dass meine Funktion es erst nach der Einstellung tut!!
Vlt störe ich oder verstehe nicht ganz was ihr vorschlägt.. .Ich bin noch ein Anfänger in Delphi und versuche mich einzuarbeiten und hoffe auf Ihr Verständnis..
Ich wäre sehr dankbar wenn Sie mir helfen können, dass ich es nicht alles ändern muss..
LG