AGB  ·  Datenschutz  ·  Impressum  







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

Programm reagiert nicht

Ein Thema von Bootscreen · begonnen am 8. Aug 2008 · letzter Beitrag vom 8. Aug 2008
Antwort Antwort
Bootscreen

Registriert seit: 8. Aug 2008
13 Beiträge
 
Delphi 2005 Personal
 
#1

Programm reagiert nicht

  Alt 8. Aug 2008, 08:03
Nabend allerseits,

Vorweg ich programmiere noch nicht allzulange mit Delphi und das was ich kann habe ich mir selber beigebracht.

So und nun zu meinem Problem.
Ich soll für meine Firma ein Programm schreiben welches Datanorm-Listen runterläd und diese dann in eine MYSQL-Datenbank schreibt.

Das ganze stellt im Grunde auch kein Problem da.
Das runterladen klappt einwandfrei genauso wie das Importieren in die DB.

Das einzige was mich nun stört ist, das mein Programm nicht mehr reagiert wenn es in meiner For-Dchleife die Datanorm-Liste abarbeitet.
Leider weiß ich auch nie bei welcher Zeiler er in der Liste ist. Da ich mir auch keinen Status anzeigen lassen kann.

Hoffe ihr wisst was ich meine und könnt mir ein wenig helfen.

MfG
Bootscreen

//Edit:
Ich häng euch nochma meinen Code von dem besagtem Teil:
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var
mysql_server, mysql_port, mysql_user, mysql_pw, mysql_db : String;
verarbeitung,ARTNUM,MATCHCODE,WARENGRUPPE,KURZNAME,LANGNAME,KAS_NAME,VPE,VPE_EK,PR_EINHEIT,EK_PREIS : String;
Fehler, i, ii : Integer;
artikel_split, langtext_split : TStringList;
q, langtext: string;
ex: boolean;
begin
    Fehler := 0;
    ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+ 'settings.ini');
    try
        mysql_server := ini.ReadString('CAO-Server','server','');
        mysql_port := ini.ReadString('CAO-Server','port','');
        mysql_user := ini.ReadString('CAO-Server','username','');
        mysql_pw := ini.ReadString('CAO-Server','password','');
        mysql_db := ini.ReadString('CAO-Server','db','');
    finally
         ini.free;
    end;
    If mysql_server = 'then
    begin
        ShowMessage('Bitte geben Sie unter Optionen den MySql-Server an.');
        Fehler := 1;
    end;
    If mysql_port = 'then
    begin
        ShowMessage('Bitte geben Sie unter Optionen den MySql-Port an.');
        Fehler := 1;
    end;
    If mysql_user = 'then
    begin
        ShowMessage('Bitte geben Sie unter Optionen den MySql-Usernamen an.');
        Fehler := 1;
    end;
    If mysql_pw = 'then
    begin
        ShowMessage('Bitte geben Sie unter Optionen das MySql-Passwort an.');
        Fehler := 1;
    end;
    If mysql_db = 'then
    begin
        ShowMessage('Bitte geben Sie unter Optionen die MySql-Datenbank an.');
        Fehler := 1;
    end;
    If Fehler = 0 then
    begin
        FMysql.Host := mysql_server;
        FMysql.port := StrToInt(mysql_port);
        FMysql.user := mysql_user;
        FMysql.password := mysql_pw;
        FMysql.UnixSocket := '';
        FMysql.Db := mysql_db; // Datenbank auf dem Server
        FMysql.UseNamedPipe := false;
        FMysql.UseSSL := false;
        FMysql.Compress := true;
        FMysql.TrySockets := false;
        if FMysql.Connect then
        begin
            //ShowMessage('Verbindung aufgebaut');
           // for i := 0 to 10 do
            for i := 0 to Listbox3.Count-1 do
            begin
                Label2.Caption := IntToStr(i);
                q := '';
                langtext := '';
                artikel_split := Split2(ListBox3.Items[i],';',false,false);
                verarbeitung := artikel_split[1];
                ARTNUM := artikel_split[2];
                MATCHCODE := artikel_split[3];
                WARENGRUPPE := '1002';
                KURZNAME := artikel_split[3];
                KAS_NAME := artikel_split[3];
                VPE := artikel_split[6];
                VPE_EK := artikel_split[7];
                PR_EINHEIT := artikel_split[5];
                EK_PREIS := FloatToStr(StrToInt(artikel_split[8])/100);
                artikel_split.Free;
                for ii := 0 to Listbox2.Count-1 do
                begin
                    langtext_split := Split2(ListBox2.Items[ii],';',false,false);
                    if langtext_split[2] = ARTNUM then
                        langtext := langtext + langtext_split[5] + '\n';
                    langtext_split.Free;
                end;
                LANGNAME := langtext;

                if verarbeitung = 'Nthen
                begin
                    q:= 'SELECT REC_ID FROM artikel WHERE ARTNUM = '+#039+ARTNUM+#039+';';
                    FResult := FMysql.query(q, true, ex);
                    if FResult.FieldValue(0) = 'then
                    begin
                        FreeAndNil(FResult);
                        q := 'Insert into artikel (ARTNUM,MATCHCODE,WARENGRUPPE,KURZNAME,LANGNAME,KAS_NAME,VPE,VPE_EK,PR_EINHEIT,EK_PREIS)'+
                             'values ('+#039+ARTNUM+#039+','+
                                        #039+MATCHCODE+#039+','+
                                        #039+WARENGRUPPE+#039+','+
                                        #039+KURZNAME+#039+','+
                                        #039+LANGNAME+#039+','+
                                        #039+KAS_NAME+#039+','+
                                        #039+VPE+#039+','+
                                        #039+VPE_EK+#039+','+
                                        #039+PR_EINHEIT+#039+','+
                                        #039+EK_PREIS+#039+');';
                        FResult := FMysql.query(q, true, ex);
                        FreeAndNil(FResult);
                        if ex then
                        begin
                            WriteLog(timetostr(time));
                            WriteLog('Query erfolgreich');
                            WriteLog(ARTNUM+' - '+KURZNAME+' erfolgreichhinzugefügt');
                            WriteLog('-----------------------------------------');
                        end
                        else
                        begin
                            WriteLog(timetostr(time));
                            WriteLog('Query fehlgeschlagen: '+FMysql.LastError);
                            WriteLog(q);
                            WriteLog('-----------------------------------------');
                        end;
                    end
                    else
                    begin
                        WriteLog(timetostr(time));
                        WriteLog('Query nicht ausgeführt');
                        WriteLog(ARTNUM+' - '+KURZNAME+' ist bereits vorhanden');
                        WriteLog('-----------------------------------------');
                    end;
                end;
                if verarbeitung = 'Athen
                begin
                    q := 'UPDATE artikel SET MATCHCODE = '+#039+MATCHCODE+#039+','+
                                            ' WARENGRUPPE = '+#039+WARENGRUPPE+#039+','+
                                            ' KURZNAME = '+#039+KURZNAME+#039+','+
                                            ' LANGNAME = '+#039+LANGNAME+#039+','+
                                            ' KAS_NAME = '+#039+KAS_NAME+#039+','+
                                            ' VPE = '+#039+VPE+#039+','+
                                            ' VPE_EK = '+#039+VPE_EK+#039+','+
                                            ' PR_EINHEIT = '+#039+PR_EINHEIT+#039+','+
                                            ' EK_PREIS= '+#039+EK_PREIS+#039+
                                            ' WHERE ARTNUM ='+#039+ARTNUM+#039+';';
                    FResult := FMysql.query(q, true, ex);
                    FreeAndNil(FResult);
                    if not ex then
                    begin
                            WriteLog('Query fehlgeschlagen: '+FMysql.LastError);
                            WriteLog(q);
                            WriteLog('-----------------------------------------');
                    end;
                end;
                if verarbeitung = 'Lthen
                begin
                    q := 'DELETE FROM artikel WHERE ARTNUM = '+#039+ARTNUM+#039+';';
                    FResult := FMysql.query(q, true, ex);
                    FreeAndNil(FResult);
                    if not ex then
                    begin
                            WriteLog('Query fehlgeschlagen: '+FMysql.LastError);
                            WriteLog(q);
                            WriteLog('-----------------------------------------');
                    end;
                end;
            end;
        end
        else
            ShowMessage('Fehler beim Verbinden: '+FMysql.LastError);
        FMysql.close;
    end;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Programm reagiert nicht

  Alt 8. Aug 2008, 08:04
Warum kannst du dir keinen Status anzeigen lassen?
Die dürfte der Einsatz von Threads helfen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Programm reagiert nicht

  Alt 8. Aug 2008, 08:07
Damit das Programm auch reagiert, wenn es gerade beschäftogt ist, kann man den betreffenden Cod ein einem Thread auslagern.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Bootscreen

Registriert seit: 8. Aug 2008
13 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Programm reagiert nicht

  Alt 8. Aug 2008, 08:10
Achso, besten dank ihr Zwei.

Hättet ihr vllt noch einen Link oder sogar ein Tut dazu?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#5

Re: Programm reagiert nicht

  Alt 8. Aug 2008, 08:10
oder Processmesssages einbauen
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Programm reagiert nicht

  Alt 8. Aug 2008, 08:15
Zitat von QuickAndDirty:
oder Processmesssages einbauen
Was den Vorgang aber stark verlangsamt. Threads sind da schon die bessere Möglichkeit, zumal das Formular bei ProcessMessages auch nicht immer perfekt reagiert.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Programm reagiert nicht

  Alt 8. Aug 2008, 08:17
Zitat von Bootscreen:
Achso, besten dank ihr Zwei.

Hättet ihr vllt noch einen Link oder sogar ein Tut dazu?
Guck mal hier: http://delphitutorials.michael-puff.de
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Bootscreen

Registriert seit: 8. Aug 2008
13 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Programm reagiert nicht

  Alt 8. Aug 2008, 08:31
Besten Dank Luckie.

Ich schaus mir mal und hoffe das ich drauß schlau werde.

Wenn cniht meld ich mich nochmal aber in nem neuen Thread.

Hier kannt du zumachen
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:23 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