AGB  ·  Datenschutz  ·  Impressum  







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

Delphi zählt falsch

Ein Thema von Coder · begonnen am 16. Jan 2005 · letzter Beitrag vom 17. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#1

Delphi zählt falsch

  Alt 16. Jan 2005, 15:47
Hallo!
ich habe Delphi 3 Pro und möchte einen Algorithmus schreiben, der ein Bild automatisch aus einem TextString heraus generiert.

Doch , wenn ich das Programm ausführe "kann es" manchmal sein [das ist nicht immer],
daß wenn ich den Text im Memo1.text verändere , also noch Zeichen davor schreibe, daß der Ergebnisstring jedes Mal anders aussieht, und Delphi auch derbe Fehlermeldungen [Zugriffsverletzungen] zeigt. Und, man kann es provozieren, wenn man mehrmals nacheinander auf die Buttons drückt.
Weiß jemand, woran das liegt?

Denn "Colord" dürfte sich nicht von Mal zu Mal verändern, da es ja jedes Mal aus EDIT ausgelesen wird.
Nicht aus dem veränderte Memo1.

hab mal den wichtigsten Source in ein extrap Projekt extrahiert [läuft auch in der einfachen Form fehlerhaft] und 2 Bilder raufgeladen [65 kb]
http://rapidshare.de/files-de/366296/inet.zip.html

Passwort ist : board

[sorry, für das beschissene Einrücken, aber ich wollte es original belassen]

ich hoffe, mir kann jemand helfen.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 16:16
Zitat:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Application.Terminate;
end;
Aua.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 16:21
Moin,

sorry das ich das jetzt hier so sagen muss.

Aber, erstmal wieso muss ich das von irgend einer Seite runterladen, dass kann man hier im Forum hinterlegen. Dann wieso muss ich für so einen Sch*** ein Passwort eingeben?

Ein Programm wird nicht mit Application.Terminate beendet, sondern mit Close.

Variablen werden niemals im Public-Teil deklariert. Also ab damit in den Privat-Teil.

Die Hinweise des Compliers solltest du mal lesen!
Dort steht z.B. das pwd nicht initalisiert wird.

Dann schreibst du Length (texi)*2 und greifst auch noch indiziert Texi[i] drauf zu,
kein Wunder, dass da eine Zugriffsverletzung auftritt.

Da du unter Projekt->Optionen, die Bereichsprüfung schon deakiviert hast, zeigt dir Delphi ja auch nicht (immer) die Verletzung an (toll gemacht!)

Also such nicht den Fehler bei Delphi, meisst sitzt der Fehler vor dem Gerät.

Nochmal: sorry, aber da konnte ich mich jetzt nicht zurückhalten.


Thorsten
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#4

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 16:24
mhh, weiß nicht, was soll daran falsch sein?
ich glaube nicht daß dort der Fehler liegt.
was gibt es denn besseres?
Close; ?


nein, ich meine... wenn Ihr auf Button 3 oder bei den beiden [button 3 und 1] abwechselnd drückt...
tritt der Fehler auf.

oder: HIER ist der Code:
_______________________________

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
pwl,i, Colord_cnt: integer;
ColordString,Colord, Texti : string;
ColorByte : Byte;

begin

Colord := edit1.text;
Colord_cnt:=1;
pwl :=Length (Edit1.Text); <-<-<---<<<< gerade editiert , hinzugefügt
for i := 1 to Length (texi)*2 do
    begin
    Colord_cnt:=Colord_cnt +1;
      if Colord_cnt > pwl then
        begin
           Colord_cnt:= 1;
        end;

Colorbyte:= ord(Colord[Colord_cnt]) ;
Colord[Colord_cnt] := chr (Colorbyte+3);

Texi[i] := chr (ord (Texi[i]) xor ord(Colord[Colord_cnt]));
end;

Label1.Caption := Colord;
end;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 16:25
Bitte delphi-tags setzen, so erkennt man keine einrückung und kann dementsprechend nicht effizient helfen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 16:30
das der Fehler nur autritt wenn du abwechselnd die buttons drückst ist zufall. Denn wie schon geschrieben sorgt folgendes eindeutig dafür das außerhalb von dem speicherbereich von "texi" geschrieben wird.
Delphi-Quellcode:
for i := 1 to Length (texi)*2 do
begin
  [...]
  Texi[i] := chr (ord (Texi[i]) xor ord(Colord[Colord_cnt]));
end;
Denn wenn "texi" eine länge von "2" hat dann schreibst du bei obiger schleife mit "Texi[i]" mindestens 2 mal außerhalb des speicherbeichs von "texi" (länge(2) * 2 = 4 => du schrebist auf Index 3 und Index 4 obwohl deine Variable von der Länge her nur Index 1 und 2 hat). Dies kann dazu führen das du irgend ein Object von dir im speicher teilweise überschreibst. Und deswegen krachts dann auch wenn du das object ode was auch immer verwenden willst (weil es ja nicht mehr in ordnung ist sondern teilweise mit falschem code überschrieben wurde).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#7

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 17:15
oh, son shit...
Texi(i) << das is der Fehler, der mir nicht aufgefallen ist...
die Länge des Strings aus Edit1 hab ich wohl bedacht.
nur keine Extravariable für die Länge von Memo1.. die nicht ..
Sind Inhalt von Edit1 und Memo1 gleichlang gibts ja auch keie Probleme ...
grrrr
shit 8 Stunden... sitz ich da dran ... 1x gut hingucken hätte mir geholfen...

hoffentlich hab ich da nix wichtiges bei meinem Windows im RAM überschrieben :I
[RegKey [HCU/MSwindows/Curvers/format_C:_when_shutdown = 0x0]
[RegKey [HCU/MSwindows/Curvers/format_C:_when_shutdown = 0x1] -...

(wenn ich mich gleich nach dem Reboot wieder melde, wißt Ihr bescheid )

DANKE.

Sorry, wegen der Delphi Tags... das kannte ich nicht.

Sorry, auch für den externen Dateiupload.
ich bin es nicht gewohnt auf boards etwas raufzuladen.
wird meist nicht gern gesehn.
ok, bei 65 kb wird wohl keiner was sagen.
und da ich auch gerade per FTP nicht an meinen server rankam habe ich rapidshare genommen.
leider verwenden die Javascript... [owbohl ich im dort source nichts böeses entdecken konnte]
naja, und mit Passwort dachte ich , sollte dann schon sein.
muß ja außer uns keiner auf den ersten Blick° wissen, was drin ist.

°ok, es gibt zipcracker und "board" steht auch in jedem "Dictionary"

[OT]eigentlich würd ich ja sowieso gerne 7zip verwenden mit AES.
Aber leider ist das Format noch nicht weit verbreitet genug. Und die wenigsten wissen, daß man das auch mit der neuesten Winrar [bin registiert, find das einfach gut!] öffnen kann [da sind neue 2 Dlls im Formatverz]
[/OT]

Ach nochwas ... warum darf ich nicht Application.terminate nehmen?
ich dachte, close; wäre nur für Formulare.
und warum nicht im Public teil deklarieren??


Also, dennoch DANKE.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 17:27
Zitat von Coder:
warum darf ich nicht Application.terminate nehmen?
Weil Application.Terminate einige Events auslässt, weil es mehr für einen abrupten Programmabbruch gedacht ist.

Zitat:
ich dachte, close; wäre nur für Formulare.
Ist es auch. Nur hat das Hauptformular da eine besondere Rolle. Wenn man Close für das Hauptformular aufruft, wird die Anwendung geloschen und nicht wie bei Application.Terminate abgebrochen.

Zitat:
und warum nicht im Public teil deklarieren??
Das Stichwort heißt Kapselung der Daten. Felder/Attribute gehören grundsätzlich in den private Abschnitt und in ganz seltenen idiologischen Ausnahmen in den protected Abschnitt (vgl. Indy-Komponenten, die dem Prinzip von "wir bieten alles in protected an und private is verboten, da nicht erweiterbar" folgen).
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 17:41
in public werden nur dinge declariert die wirklich public sein sollen, also von anderen Klassen verwendet werden sollen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Delphi zählt falsch

  Alt 16. Jan 2005, 17:50
Zitat von jbg:
...Felder/Attribute gehören grundsätzlich in den private Abschnitt und in ganz seltenen idiologischen Ausnahmen in den protected Abschnitt ..
Dann wäre ich aber ein ganz seltener Ideologe. 8) Habe mal ein paar Forms durchgeschaut und war selber überrascht : es gibt in den größeren Forms fast nur protected Deklarationen. Und die kamen nach und nach da rein, so daß ich das gar nicht so gemerkt habe. Und zwar weil es gar nicht anders geht.

Zumindest wenn man OOP von Anfang an eingesetzt hat und das OOP-Konzept durchgängig beibehält. Wenn das aber eine ganz seltene Ausnahme sein sollte, na dann gute Nacht, Delphi-"Programmierer".
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:45 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