Autor Beitrag
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 04.01.10 19:22 
Bieten die Indys denn keine asynchronen Methoden an? Normalerweise muss man für solche Aufgaben gar keinen Thread verschwenden oder sich überhaupt um das Thema Multithreading kümmern, sondern lässt den Treiber das regeln.

_________________
>λ=
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 04.01.10 19:25 
Hey,

wenn ich den Thread terminiere, dann wird vorher immer ne Meldung ausgegeben, ob er wirklich unterbrochen weden soll. Also ein Terminate wird definitiv nicht aufgerufen (jedenfalls nicht von mir). Und die Break-Zeile, sowie die letzte Zeile wird auch nicht ausgeführt (siehe oben). Das hatte ich schonma alles geloggt und mit dem Debuger angesehen. Aber Da der Thread mehrere hundert Datensätze bearbeitet is klar das ich nich alles durchdebugen kann...

MfG Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 04.01.10 19:28 
Was passiert denn in den ganzen Unterklassen? MP3.GetAudiofile, Int.FindTitel usw. Wird da noch aufs Formular zugegriffen?
Und, schreib mal testweise um das ganze ein try...except... end; und lass die Exception ausgeben oder so.

_________________
PROGRAMMER: A device for converting coffee into software.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 04.01.10 19:49 
Hey,

ne die greifen nich auf die Form zu. Die erstellen sich n TIdHTTP-Objekt un surfen dann im Netz. Manchma wirft das Indy-Objekt dann mit Exceptions, aber die hab ich abgefangen. Andere Exceptions kommen nich, denn die würde der Compiler ja dann eh anzeigen.
@Kha: (sry hab ich jetzt erst gelesen). Wird denn die IndyHTTPClient-Komponente von nem Treiber gesteuert?

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 04.01.10 20:29 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
Andere Exceptions kommen nich, denn die würde der Compiler ja dann eh anzeigen.

Och.. wenn die in nem Thread geworfen werden, wär ich mir da nicht immer so sicher. Hatte da auch schon manch merkwürdige Effekte.

_________________
PROGRAMMER: A device for converting coffee into software.
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mo 04.01.10 20:52 
Probier trotzdem mal in der schleife ein try..except...showmessage()...end
und vor das letzte terminate eine showmessage
und ebenfalls eine showmessage vor das break...
das mache ich immer...als alternative zum debuggen: messageboxes oder log ausgaben
könntest du auch machen.
vor jedem durchlauf ne ausgabe in eine datei und gucken, obs immer bei einer bestimmten auftritt
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 04.01.10 20:58 
In nem Thread ne ShowMessage.. ist das nicht auch schon ein Zugriff auf die VCL, und sollte vermieden werden? :?:
dann doch lieber eine LogDatei. Oder OutputDebugString vielleicht noch?

_________________
PROGRAMMER: A device for converting coffee into software.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 04.01.10 21:21 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
@Kha: (sry hab ich jetzt erst gelesen). Wird denn die IndyHTTPClient-Komponente von nem Treiber gesteuert?.
Ja, von dem deiner Netzwerkkarte ;) .

_________________
>λ=
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 04.01.10 21:45 
Hey,

ich habs (glaub ich). Er schmeißt ne Exception, die ich in ner anderen Version schon behoben hatte, deshalb hab ich da nich nochma nachgesehen. Also jetzt sollte es gehen. Danke an alle!

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Di 05.01.10 17:56 
user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
In nem Thread ne ShowMessage.. ist das nicht auch schon ein Zugriff auf die VCL, und sollte vermieden werden? :?:
dann doch lieber eine LogDatei. Oder OutputDebugString vielleicht noch?


ja, richtig.
Es kommt dabei u.U. auch zu sehr lustigen Messageboxen...Zum Teil echt nicht vorhersehbar, was da passiert.
Aber zum Testen kann man das mal machen, da es sehr schnell geht.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 05.01.10 18:08 
ShowMessage in einem Thread ist glaube ich so ziemlich das schlimmste, was man machen kann. Außer vielleicht Tempomat im Wohnmobil einstellen und dann nach hinten gehen zum Kaffee kochen. :mrgreen:

_________________
We are, we were and will not be.
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Di 05.01.10 18:21 
stimmt...wenn man showmessage in einem thread verwendet wird der halbe pc explodieren, da man unsychron auf arbeitsspeicher zugreift. durch die vielen gleichzeitigen zugriffe überlastet der Bus, beginnt zu glühen. dadurch versagt das kühlsystem und die cpu und der ram werden fast gleichzeitig explodieren, diese explosion erfasst die grafikkarte, die dadurch ebenfalls in die luft geht. Wenn man jetzt nicht schnell genug den Stecker zieht, hat man seine Festplatte gleich mit vernichtet durch sehr hohe Ströme, da diese ja jetzt nicht mehr zu CPU und und Grafikkarte abfließen können.

Aber das geht ja noch. Viel schlimmer ist es, 1 Mio. Strings zu hashen, um die Anzahl der Vorkommen zu zählen. Dann explodiert nämlich alles gleichzeitig.
Als Lektüre dazu empfehle ich "Quantenphysik für Anfänger" von A. Schwafel.

Greetz Flamefire
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Di 05.01.10 18:49 
Hey,

bei nem ShowMessage im Thread kan ch men Prog gar nich kompilen, also bin ich nich derjenige, der den Weltuntergang auslöst :-P
Tipp an alle anderen: haltet zur Sicherheit die Hand an den Stecker um schnell ziehen zu können xD

MfG

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Di 05.01.10 18:51 
Lol Flamefire, dein Nick sagt wohl alles :lol:
Wie schauts mit der Textbox aus, ist writeln() Threadsicher? Dann könnte man die Konsole zum testen verwenden.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Di 05.01.10 19:37 
Das ganze ging eher an Gausi... ^^

Warum kannst du es nicht compilen? unter uses "Dialogs" eingebunden?

Statt Konsole wäre die Debugausgabe besser. Hab aber nie damit gearbeitet...ging immer mit Messageboxen...
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Di 05.01.10 19:40 
achne sry, im programm kommt dann der fehler: Leinwand/Bild erlaubt kein zeichen...

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Di 05.01.10 19:50 
ok, dann debugausgabe...
das ist ein vcl fehler ;-)

wobei: du könntest auch log breakpoints nehmen.
also einen breakpoint auf jede zeile, die du willst, dann auf dessen eigenschaften und aktivieren, dass ne meldung kommt und dass er nicht anhällt
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 06.01.10 13:37 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
achne sry, im programm kommt dann der fehler: Leinwand/Bild erlaubt kein zeichen...

Nimm eine einfache MessageBox. ShowMessage ist nicht threadsafe, da es zur VCL gehört. Aber eine Konsole ist wohl praktischer, da man dann nicht immer alles wegklicken muss.
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mi 06.01.10 16:27 
ja, wie gesagt, zum testen funktioniert es manchmal mehr oder weniger.
aber im delphi debugger wäre dann die debugmessages am besten
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Mi 06.01.10 19:40 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
Hey,
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.WriteGrid(Col, Row: Integer; Msg: String);
begin
  LyricGrid.Cells[Col, Row] := Msg;
end;

Synchronize(TForm1.WriteGrid(GRID_ACTIO, i+1, 'skipped')); //-->Fehler
Fehler:
ausblenden Quelltext
1:
[Fehler] Unit1.pas(233): Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt					


Ist ja auch Quatsch. Wenn dann musst du schon Synchronize(Form1.WriteGrid(GRID_ACTIO, i+1, 'skipped')); aufrufen und nicht TForm!