AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi programm friert ein, progress bar, leerzeichen ignorieren...
Thema durchsuchen
Ansicht
Themen-Optionen

programm friert ein, progress bar, leerzeichen ignorieren...

Ein Thema von Headi · begonnen am 24. Dez 2005 · letzter Beitrag vom 27. Dez 2005
 
Headi

Registriert seit: 17. Nov 2005
Ort: Weinfelden
101 Beiträge
 
Delphi 2007 Professional
 
#6

Re: programm friert ein, progress bar, leerzeichen ignoriere

  Alt 25. Dez 2005, 20:10
so hab jetzt mal dein code ausprobiert, aber der funktioniert irgendwie nicht richtig.
Folgende Fehlermeldung:
Zitat:
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 00574807 in Modul 'Project1.exe'. Lesen von Adresse 00000000' aufgetreten.
mein code sieht so aus vielleicht hab ich ja was falsch gemacht

Delphi-Quellcode:
procedure extractComments(const ListWithComments, ListWithoutComments : TStringList);
var i : Integer;
begin
  // nachschauen, dass keine Referenz = nil ist
  if assigned(ListWithComments) and assigned(ListWithoutComments) then
    begin
      // löschen der Liste in die alle Zeilen ohne Kommentar kommen
      ListWithoutComments.Clear;
      // schauen ob es mindestens eine Zeile gibt
      if ListWithComments.Count > 0 then
        begin
          // übertragen der Einträge, dabei aber jeden Kommentar löschen
          for i := 0 to ListWithComments.Count - 1 do
            begin
              // wenn Zeile einen Kommentar enthält
              // > 1 -> keine Zeile die nur ein Kommentar ist wird kopiert
              if Pos(';', ListWithComments.Strings[i]) > 1 then
                begin
                  // kopieren des Teils der nicht zum Kommentar gehört
                  ListWithoutComments.Add(copy(ListWithComments.Strings[i], 1, Pos(';', ListWithComments.Strings[i])));
                end // if Pos(';', ListWithComments.Strings[i]) > 1
              // sonst die Zeile unverändert kopieren
              else
                begin
                  ListWithoutComments.Add(ListWithComments.Strings[i]);
                end;
            end; // for i := 0 to ListWithComments.Count - 1
        end; // if ListWithComments.Count > 0
    end; // if assigned(ListWithComments) and assigned(ListWithoutComments)
end;

procedure TForm1.Button1Click(Sender: TObject); //sfv file öffnen
var SLwithcomments: TStringList;
begin

  if OpenDialog1.Execute then
   begin
    SLwithcomments := TStringList.Create;
    SL.LoadFromFile(OpenDialog1.FileName); //sfv daten in stringlist speichern
    extractComments(SLwithcomments, SL);
    SL.Delimiter :=' ';

    SLSub := TStringList.Create;
    StringGrid1.RowCount:=SL.Count+1; //stringgrid zeilen erstellen

    for I := 0 to SL.Count - 1 do
     begin
      SLSub.DelimitedText := SL[I];

      StringGrid1.Cells[0, (1+(I))]:=SlSub[0]; //dateiname in stringgrid einfügen
      StringGrid1.Cells[2, (1+(I))]:=SlSub[1]; //hash wert in stringgrid einfügen
      StringGrid1.Cells[1, (1+(I))]:='ready'; //status gleich ready
     end;
   end;
end;



Zitat von Sir Rufo:
Zitat:
Ja klar, du kannst einen Thread anlegen. Aber Nebenläufigkeit hat ein paar eigene Tücken. Ist nicht wirklich trivial da alles zu berücksichtigen. Du findest eine Menge Tutorials zu Threads und Delphi, aber hier dürfte es reichen, wenn du von Zeit zu Zeit etwas rechenzeit freigibst.
Iwo, das ist mit Jedi (TJvThread) eigentlich kein grosses Geheimnis. Man darf nur nicht aus dem Thread schreibend direkt auf die Komponenten zugreifen (z.B. ProgressBar, Label, etc.).
Die einfachste Variante ist die Aktualisierung mit einem Timer zu lösen. Die Werte aus dem Thread schreibt man sich in eine globale Variable (oder auch Liste oder wie auch immer) und gibt diese dann mit dem Timer aus.

Es ist einfacher als man denkt und hilft ungemein
Könntest du das vielleicht ein bisschen genäuer erklären??
Ich habe wirklich noch nie einen thread erstellt.
Vorallem habe ich ja nur einen Befehl in meinem code, der rest überniehmt dann die componente!!
Achja der Befehl lautet so: SZCRC32File(FileName); Achja hab mal noch die componente angehängt und mein code ohne exe

Danke schon mal

mfg headi
Angehängte Dateien
Dateityp: zip sfv_937.zip (15,0 KB, 5x aufgerufen)
Dateityp: zip crc_133.zip (10,1 KB, 6x aufgerufen)
Pascal
  Mit Zitat antworten Zitat
 


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