Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi LZW Komprimierung für texte - zugriffsverletzung (https://www.delphipraxis.net/138964-lzw-komprimierung-fuer-texte-zugriffsverletzung.html)

p80286 26. Aug 2009 16:56

Re: LZW Komprimierung für texte - zugriffsverletzung
 
@gammatester

Auch wenn Du recht hast, jetzt hast Du ihn verscheucht.
(Irgendwie hab ich das Gefühl, das ist alles wild zusammenkopiert)

Gruß
K-H

gammatester 26. Aug 2009 17:28

Re: LZW Komprimierung für texte - zugriffsverletzung
 
Zitat:

Zitat von p80286
@gammatester

Auch wenn Du recht hast, jetzt hast Du ihn verscheucht.
(Irgendwie hab ich das Gefühl, das ist alles wild zusammenkopiert)

Gruß
K-H

Das glaube ich nicht. Diese Art von "Diskussion" haben wir schon in mindestens zwei weiteren Threads gehabt. Außerdem sind ja jetzt auch konkrete Hinweise auf die Bugs vorhanden. Leider erhält man manchmal kein Rückmeldung, ob die Probleme beseitigt sind, obwohl ich das in diesem Fall bezweifele.

Gruß Gammatester

qwertz543221 26. Aug 2009 20:56

Re: LZW Komprimierung für texte - zugriffsverletzung
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich denke jetzt sollte es funktionieren - probiert es mal aus

auch mit selbst erstellten arrays

gammatester 26. Aug 2009 22:00

Re: LZW Komprimierung für texte - zugriffsverletzung
 
Zitat:

Zitat von qwertz543221
ich denke jetzt sollte es funktionieren - probiert es mal aus

auch mit selbst erstellten arrays

Hallo, gut daß Du Dich gemeldet hast. p80286's Beitrag hat bei mir schon fast ein schlechtes Gewissen erzeugt :wink:

Allerdings hat sich Dein Programmier- und Posting-Stil nicht geändert. Was ist so schwierig daran, .pas + .dfm + .dpr in ein ZIP zu packen :?: Ich befürchte fast, daß das wieder mal nicht der eigentliche Code ist. Aber um etwas guten Willen zu zeigen, gleich ohne Umschweife einige Fehler:

1. Unkompilierbar also gibt's nix auszuprobieren. Es fehlen
- Units.dfm
- in TForm1 = class(TForm): Edit1, Edit2, Edit3, memo1, Button2...Button8

2. Bubblesort greift auf ar[length(ar)] zu also BUMM!

3. In Quicksort steht immer noch der Schrott
wb[j]:=wb[i];
wb[i]:=b;
nach der while Schleife.

Gruß Gammatester

qwertz543221 27. Aug 2009 17:59

Re: LZW Komprimierung für texte - zugriffsverletzung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für die Rückmeldung. Doch möchte ich folgendes anmerken:

1)
Zitat:

Bubblesort greift auf ar[length(ar)] zu also BUMM!
im qt steht doch folgende schleife:
Delphi-Quellcode:
while i<length(ar) do //hier
begin
a:=ar[i];
b:=ar[i+1];
if a<=b
  then i:=i+1
    else
    begin
    c:=a;
    a:=b;
    b:=c;
    ar[i]:=a;
    ar[i+1]:=b;
    i:=i+1;
    end;
end;
dadurch, dass in der while schleife nicht "<=" steht, läuft sie bis length(ar)-1. Es macht auch nicht "BUMM!" - sondern es gibt die korrekte Reihenfolge aus.


2)
Zitat:

In Quicksort steht immer noch der Schrott
wb[j]:=wb[i];
wb[i]:=b;
nach der while Schleife.
=>hab ich rausgeworfen. - hat aber keine Auswirkung??

3) im anhang jetze eine zip mit dpr, dcu, pas, exe,dfm,dcu,cfg etc

gammatester 27. Aug 2009 20:23

Re: LZW Komprimierung für texte - zugriffsverletzung
 
Zitat:

Zitat von qwertz543221
Danke für die Rückmeldung. Doch möchte ich folgendes anmerken:

1)
Zitat:

Bubblesort greift auf ar[length(ar)] zu also BUMM!
im qt steht doch folgende schleife:
Delphi-Quellcode:
while i<length(ar) do //hier
begin
a:=ar[i];
b:=ar[i+1]; // ja und hier wird i+1 = length(ar) und BUMM!
dadurch, dass in der while schleife nicht "<=" steht, läuft sie bis length(ar)-1. Es macht auch nicht "BUMM!" - sondern es gibt die korrekte Reihenfolge aus.

Die Bedingung der While-Schleife lautet nicht "<=" sondern "<" und es macht BUMM! wie in meinem Kommentar beschrieben. Aber natürlich nur wenn Rangecheck eingeschaltet ist (was bei der leider mal wieder nicht der Fall ist).

Gammatester

PS: Scheint so, als wenn der "Schrott in Quicksort" notwendig ist, weil Du eine ungewöhnliche Implementation hats, die vor der While-Schleife i := l-1; und j := r+1; setzt und nach den repeats immer tauscht. Also lass Ar[j]:=Ar[i]; Ar[i]:=b; drin.

qwertz543221 28. Aug 2009 20:28

Re: LZW Komprimierung für texte - zugriffsverletzung
 
wie ist es denn möglich, doppelte einträge nach dem sortieren zu eliminieren?
habe es wie folgt versucht, doch leider ohne erfolg:
Delphi-Quellcode:

function tform1.clean(ar:sy):sy;
var i,j:int64;

begin
i:=0;
setlength(result.zahl,length(ar.zahl));
init(strtoint(edit1.Text));
quicksort(ar,low(ar.zahl),high(ar.zahl));

while i<high(ar.zahl) do
begin
if ar.zahl[i]<>ar.zahl[i+1]
  then
  begin
  result.zahl[i]:=ar.zahl[i];
  end
    else
    begin
    result.zahl[i]:=ar.zahl[i+1];
    end;
i:=i+1;
end;

write(result);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 Uhr.
Seite 3 von 3     123   

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