Zum Inhalt springen

Maulwurf_der_Schlaue

Mitglieder
  • Gesamte Inhalte

    801
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Maulwurf_der_Schlaue

  1. Hallo mitnander, hab jetzt nen Thread der die Arbeit des Auswertens der Tabelle sowie die Dateibehandlung in die Hand nimmt. Die Verarbeitungszeit dauert immernoch genauso kurz oder lang Das einzige was besser ist ist das das Fenster nicht mehr über Application.ProcessMessages aktualisiert werden muss.
  2. Hallo, danke für die HIlfe, ist mir mittlerweile auch aufgefallen das der Thread den man erzeugt, wirklich nur ein 'Worker' sein sollte, der halt hin und wieder, wenn es erforderlich ist, sich bei Hauptthread meldet. Werd's einfach mal versuchen, jetzt wo ich genug weiß , ob meine Anwendung einen Vorteil hat. Wenn nur ein weiterer Thread offen ist. Was halt schon mal schön ist, ist das die Anwendung flüssig wirkt, das Fenster ruckelt nicht wenn er in der Bearbeitungsphase steckt.
  3. Hallo, danke erstmal für die Ausführliche Antwort, ich muss es noch ausprobieren, denke aber das es mir hilft , dank dir. Wieso kann dann mein Thread eine Meldung ausgeben wenn im Hauptprogramm auch eine Ausgabe war? Was ändert sich an meine Thread wenn ich zuvor ShowMessage ausgeführt habe? Eigentlich doch nichts oder?
  4. Hallo miteinander, neuer Tag neues Problem. Ich hab mir ein Programm geschrieben welches einen weiteren Thread startet und dort eine Berechnung durchführt. Wenn die Zahl berechnet ist soll der zweite Thread eine Meldung ausgeben - mit ShowMessage(). Das tut er aber nur wenn ich in meinem Programm eine Ausgabe, ShowMessage o.ä., tätige. Diese Ausgabe muss vor dem Aufruf von Resume erfolgen. Sonst erhalte ich wieder keine Meldung vom Unterthread. Programmablauf: // ... // ... im hauptthread - unit1 // try NewThread := MyThread.Create(true); NewThread.FreeOnTerminate := false; NewThread.SetZahl(StrToInt(Edit1.Text)); ShowMessage('Zahl gesetzt'); [COLOR="Red"]<--[/COLOR] NewThread.Resume; except on E:Exception do begin ShowMessage(E.Message); NewThread.Free; end; end; // ... im Unterthread - unit2 // procedure MyThread.Execute(); begin // ... Berechnung // // zahl ist als private deklariert und wir von setzahl gesetzt ShowMessage(IntToStr(Zahl)); end; Danke schon mal für eure Unterstützung. Mit Google hab ich nichts brauchbares gefunden was mein Problem beheben könnte
  5. @grueni: danke wegen des tipps, nur irgendwie öndert der sich von selber dauernd. Also einmal ist er crArrow und dann wieder crHourGlass, dann wieder anders herum. Dabei hab ich gleich an Anfang gesagt Form1.Cursor := crHourClass und am ende der Prozedur crArrow... noch keine Ahnung was das ist.
  6. @grueni: Stimmt, das Application.ProcessMessages hab ich eingebaut damit der User nicht das gefühl bekommt die Anwendung wäre abgestorben ;D. Das mit dem Mauszeiger is ne gute Idee, werd ich gleich übernehmen.. Ich werd mich dann gleich noch in die Thread-Theorie einlesen. 1) hoffe ich finde was in der Hilfe oder bei google. 2) hoffe das es nicht allzuschwer wird... hab mir noch folgendes Überlegt: - kann ich die performance verbessern wenn ich weniger spalten als ergebnis erwarte? bis jetzt hab ich select * from ... - kann man den SQL sonstwie optimieren? - die tabelle hat ein paar millionen einträge, wie kann ich nachschauen welche felder mit einem index belegt sind? (pl/sql developer) muss mich bezüglich der obigen überlegungen noch informieren
  7. Also ich hab jetzt mal getestet ca. 581.000 Datensätze mit Ausgabe und Application.ProcessMessage -> Dauer 6:15 Minuten ohne Ausgabe und Application.ProcessMessage -> Dauer 5:45 Minuten Wenn ich mich nicht verrechnet habe dann sind da 30 Sekunden unterschied, bei diesem Zeitaufwand sind dann 30 Sekunden auch nicht die Welt. Vorallem weil der Psychische Effekt wegfällt. 30 Sekunden ohne Textanzeige dauern viel länger als mit . @Amstelchen Wie du oben geschrieben hast steht DOA für Direct Oracle Access, jetzt hab ich eben gedacht ich könnte noch etwas, eben weil es direkt ist, rausschlagen. Die Lösung mit dem weiteren SQL, ist zwar ganz in Ordnung nur dauert das Senden und abwarten des SQL's sowie das Durchlaufen fast genauso lang wie wenn ich es gleich verarbeite. Das Verwenden von First, Last und MoveTo muss ich noch ausprobieren. >> EDIT 1: Generell kann man es verwenden, in der Hilfe steht dazu folgendes This feature does not yet work properly on Oracle 9.0 and 9.2 due to Oracle Bugs 2286367 and 2478181, which may cause ORA-00600 exceptions. Wir nutzen Oracle8i sprich ich kann sie nicht verwenden Oder hab ich da was falsch interprediert? << EDIT 1: @grueni: wegen den Thread's: die helfen mir nicht weiter oder seh ich das falsch?
  8. Das mit den Threads würd ich mir dann halt mal anschauen, kann ja nicht so kompliziert sein Hilft mir das denn weiter wenn ich die Anzeige in einem anderen Thread laufen lasse? Ich hab ja nur eine CPU die schon zu 100% ausgelastet ist, wenn mein Programm läuft. Wäre es schneller wenn ich die Daten erst in ein Grid einlese und dann in die Datei?? Ich würd ungern nochmal alles umschreiben ohne zu wissen das es _merklich_ etwas bringt.
  9. Hallo, danke für die Unterstützung. Der Zugriff auf die Datenbank erfolgt über die DOA-Schnittstelle. Hab mir TOracleSession und ein TOracleQuery Objekt erstellt bzw. erstellen lassen, von Delphi. ... // Programmstart OracleSession1.LogonUsername := sql_user; OracleSession1.LogonPassword := sql_pw; OracleSession1.LogonDatabase := sql_Database; OracleSession1.LogOn; OracleQuery1.Session := OracleSession1; ...// Ein Paar andere Dinge die nichts mit Oracle zu tun haben OracleQuery1.SQL.Clear(); OracleQuery1.SQL.Add(sSql_query); OracleQuery1.Execute(); iSpalten := OracleQuery1.FieldCount(); while not OracleQuery1.Eof do begin sSatz := ''; for iIndex := 0 to iSpalten-1 do sSatz := sSatz + VarToStr(OracleQuery1.Field(iIndex)) + '#'; Label2.Caption := 'Verarbeitete Sätze -> ' + IntToStr(OracleQuery1.RowsProcessed); OracleQuery1.Next; // die Variable sSatz wird in eine Datei geschrieben mit write end; // Ende der SQL-Verarbeitung So ich hab jetzt mal mit einer ungenaueren Abfrage die Datenbank genervt . Beim Ergebnis kamen dann ca. 581.000 Datensätze raus dauerte ca. 6 min. Da hat er komischerweiße nicht bei 600 angehalten und in 25er Schritten weitergearbeitet, bei dieser Abfrage war es nur zufällig mittendrin. Das sehe ich wenn mein Label2 nicht mehr hochzählt Das sich die Anzeige auf die Performance auswirkt ist mir klar, nur ein ungeduldiger User macht das Programm hardcore zu (STRG+ALT+ENTF) . So sehen die User wenigstens noch das das Programm etwas tut. Hoffe der Code und die neuen Ereignisse helfen weiter P.S gibt es eine möglichkeit herauszufinden wie viele Datensätze der SQL-Befehl liefern wird? Das ich meine Anzeige verbessern kann, also: Verarbeiteter Datensatz 403 von 1239?
  10. Hallo JesterDay, danke für den Tipp, aber was ich bis jetzt gesehen hab ist das recht kompliziert. So wichtig ist das dann auch nicht bzw. der Kostennutzen-Faktor ist dann zu gering. --> Edit 1: Wenn ich nebenbei noch Zeit hab schau ich mal ob ich das nicht doch hinbekomme.
  11. Hallo, weiß jetzt nicht ob ich es in Programmierung->Delphi oder Datenbanken ansprechen soll, da es aber um Delphi geht hoffe ich das ich hier richtig bin. Sachverhalt: Der User gibt einen SQL-Befehl ein der dann an die Oracle-Datenbankserver geschickt wird. Das Ergebniss soll mit Delphi verarbeitet werden. Problem: Ich lasse eine Anzeige mitlaufen, die mir anzeigt wie viele Datensätze von Delphi verarbeitet wurden. Die ersten 600 gehen ziemlich schnell, die darauffolgenden fahren immer in 25'er Schritten voran bis die 1229 Datensätze abgearbeitet wurden. Das dauert zwar nur 33 sekunden aber es ist durchausmöglich das es mehrere 100.000 Datensätze sind. Frage: Wieso sind die ersten 600 Datensätze ruckzuck bearbeitet und die folgenden laufen in langsamen 25er Schritten. Kann man da was machen? Also irgendwelche Einstellungen zur Verbindung? Bei Google hab ich nicht wirklich Rat gefunden. Danke für eure Hilfe.
  12. Hallo nochmal, mittlerweile glaub ich das es nicht geht, so wie ich geschrieben habe. Habs jetzt versucht aber es haut einfach nicht hin. Mir will aber das Gefühl nicht weggehen das es da ein ganz simple lösung gibt. Wenn sie mir einfällt dann poste ich sie hier Fürs Protokoll: Gut ich hatte nicht recht und gestehe meine Schuld ein
  13. ok, kann sein das ich mich irre werds hernach mal ausprobieren, ist wahrscheinlich das beste -> Spass <- nur fürs protokoll ich will aber recht haben -> Spass <-
  14. Ich weiß nicht ob ichs überlesen habe, reden wir von IBM oder vom SIEMENS ?? Das die Felder unterschiedlich groß sind ist hier egal, da FILLER nicht befüllt werden. So werden die 4 Zahlen auf 2 Zahlen . 2 Zahlen aufgeteilt. Das is doch grad das schöne an COBOL, du kannst aus 01012006 einfach 01.01.2006 machen, ohne irgendwelche Funktionen. // Meine Meinung beruht auf einem SIEMENS System, ist durchaus möglich das es auf nem IBM System so nicht geht // -> Edit: wenn du das gepackte feld1 Pic 9(4) com-3 in ein feld2 Pic 9(4) schiebst und feld3 redefines feld2 machst, geht das dann?? <- Edit.
  15. Hallo, wie kann ich ein TEdit-Feld also z.B. Edit1 zentrieren, ich meine nicht das Feld an sich sonder den Inhalt, also Edit1.Text. So wie ich das gesehen hab gibt es kein TAlignment. Google hat mir auch nicht wirklich weiter geholfen. Irgendwie muss das doch gehen, oder? Ist der Weg so einfach das ich ihn nicht sehe? Keine Ahnung, vllt. hat jmd. von euch ne Idee oder einen Tipp.
  16. Hallo, das COMP-3 darf dich innerhalb deines Programmes gar nicht stören, es geht nur darum wie die Daten auf dem Datenträger gespeichert werden, hier mit dem COMP-3, zumindest ist das mein Wissenstand. Als Lösung könnte ein REDEFINE helfen, weiß jetzt aber die Syntax nicht genau. Sieht glaub ich so aus: *FELD1 enthält ein Datum im Format MMJJ 01 FELD1 PIC 9(4) COMP-3. *PACKED-DECIMAL = COMP-3. 01 FELD2 [COLOR="Red"]REDEFINE FELD1[/COLOR]. 05 FELD2-MM PIC 99. 05 FILLER PIC X VALUE '.'. 05 FELD2-JJ PIC 99. *FELD2 soll das Datum im Format MM.JJ ausgeben
  17. Hallo, ich hab das Programm nicht getestet da ich hier nicht die möglichkeit habe, aber wenn du schon nicht weißt wie man mit google umgeht dann sollte das doch klappen Das Tool heisst "NetLimiter" und wurde in 1 Minute ausfindig gemacht. Trial-Download: http://www.softpedia.com/get/Tweak/Network-Tweak/NetLimiter.shtml Homepage: http://www.netlimiter.com/ (nicht böse gemeint, nur es nervt wenn google beim ersten versuch das hoffentlich passende Programm liefert, das könnte man auch selber)
  18. Guten Morgen, macht dir da mal nicht den Kopf, wenn du während des Projektes feststellst das du doch noch was selbst erstellst (irgendein wichtiges Dokument) dann kannst du es natürlich hinzufügen ohne das du es im Antrag aufgezählt hast. Es wird keiner von dir Verlangen das du vor Beginn des Projektes alle Dokumente benennen kannst. Wenn du allerdings ein Dokument einplanst und es dann nicht mit Abgibst wirft das wahrscheinlich ein schlechteres Licht auf dich und dein Projekt. (Quelle: Handbuch zur Abschlussprüfung IT-Berufe)
  19. Hallo, hier findest du mal eins als Beispiel: (Quelle: http://ivs.cs.uni-magdeburg.de/~dumke/EAD/Skript03.html Punkt "Struktogramm")
  20. Hallo, führ das selbe aus, nur anstatt xcopy32 verwendest du xcopy. Also: xcopy E:\Dokumente und Einstellungen\dER-goTT\Favoriten\* d:\backup\ -e -v
  21. Hallo, diesen Begriff hab ich nur einmal gehört, das war in der Schule, da wurde gesagt das das Entwicklertest heisst weil der Entwickler testet ob die Änderungen funktionieren. Also das der Exit-Button auch mit einer Funktion belegt ist . Hier in der Arbeit wird meistens wenn überhaupt was zum Thema gesagt wird Modultest gesagt weil hier im Betrieb so ziemlich alles Module sind . Aber gut, jetzt weiß ich was ich zu sagen habe...
  22. Hallo, also du gehst auf Start->Alle Programme->Autostart->... und hier findest du alle Einträge, richtig? Wenn du Sie löscht dann sollten Sie auch draußen bleiben. Je nach Anwendung stehen die da aber gar nicht drin. Du kannst über Start->Ausführen->msconfig den Reiter "Autostart" auswählen, dort siehst du alle Userprogramme die starten. Auch hier kannst du fast alle herausnehmen, du musst natürlich schon etwas mehr wissen was du tust, nicht das du dann ohne Virenscanner unterwegs bist . Wenn du den Dateinamen nicht eindeutig identifizieren kannst google einfach danach. Hoffe konnte dir helfen.
  23. Guten Morgen, es ist egal was du für Worte wählst. Es geht darum das ein Dritter sofort erkennt um was es in deinem Projekt geht. Dazu sind folgende Punkte einzuhalten: 1) Woher kommt der Anstoss für dein Projekt 2) Wer ist dein Auftraggeber/Kunde 3) Welche Ziele werden für den Auftraggeber/Kunden angestrebt 4) Welches Produkt übergibst du konkred zum Abschluss deines Projektes (Quelle: s. 76 im Handbuch zur Abschlussprüfung IT-Berufe 2. Auflage)
  24. Hallo, muss LastResort zustimmen. Du kannst zusätzlich deine Schulunterlagen durchschauen.. dann merkst du schon was du noch weißt oder was du besser nochmal durchliest. Ich werde erst Anfang März, Anfang April anfangen... wenn ich jetzt anfange dann weiß ich eh die hälfte nimma :D wünsch euch auf jedenfall alles gute für die AP.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...