AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit msvcrt.dll

Ein Thema von Mokus · begonnen am 2. Jul 2014 · letzter Beitrag vom 3. Jul 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Problem mit msvcrt.dll

  Alt 2. Jul 2014, 12:46
Delphi-Version: XE2
Tach zusammen,

habe ein recht komisches Problem mit meinen Delphi, es tretten Sachen auf, die ich mir nicht erklären kann.
Bild 001 ist eine Ausgabe, wie angeblich ein String aussehen soll, den ich von hand eingegeben habe.
Im bild 001_debug kann aber man gut sehen, dass der Parameter eigentlich auf "test" steht ...

Delphi-Quellcode:
procedure TErrechne.AddStadt(AlleNachbarn: allNachbarn; Name: string);
var
  temp: TStadt;
begin
  temp := TStadt.create(Name, AlleNachbarn);
  self.AllStadte.Add(temp);
  showmessage(self.AllStadte[AllStadte.Count - 1].getName);
end;
hier ist die Methode wo der Fehler auftritt.

Möchte ich nun in verschiedenen Teilen des Programmes getname aufrufen, kommt ein komischer Fehler.
Daraufhin habe ich das showmessage und auch hier kommt der Fehler,
Das hindert ein nun am programmieren, da einfach sachen wie ein .add oder ein Object.getname zu komischen fehler führt, hat wer irgendwie eine Idee...?
Miniaturansicht angehängter Grafiken
001_debug.jpg   002_fehler.jpg   001.jpg  
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Problem mit msvcrt.dll

  Alt 2. Jul 2014, 13:01
Sicherlich magst du uns noch paar Inputs geben, wie z.B.:
1. Wird ein Create von AllStadte aufgerufen, wenn ja wo und was passiert da
2. Ist AllStadte zu diesem Zeitpunt assigned
3. was macht das Add von AllStadte
4. was macht das GetName von AllStadte
5. was zeigt AllStadte.Count an
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Problem mit msvcrt.dll

  Alt 2. Jul 2014, 13:14
Gerne gib ich weiter Informationen raus,
wusste nur nicht was ihr genau wissen müsst:

1. Wird ein Create von AllStadte aufgerufen, wenn ja wo und was passiert da

Ja wird es, im Form create wird die klasse TErrechne erstellt. ,
Delphi-Quellcode:
procedure TForm6.FormCreate(Sender: TObject);
begin
  if not Assigned(self.Berechnung) then
  begin
    self.Berechnung := TErrechne.create;
  end;
end;
und im Constructor von TErrechne wird AllStadte erstellt.

constructor TErrechne.create;
begin
self.AllStadte := TObjectList<TStadt>.create;
end;


2. Ist AllStadte zu diesem Zeitpunt assigned

ja, da es ganz zum anfang erstellt wird.


3. was macht das Add von AllStadte
AllStadte ist eine normale GenericsObjectlist von typ TStadt, am add selbst habe ich nichts geändert.


4. was macht das GetName von AllStadte

Da allStadte eine Objectliste ist, greif ich auf das Object zu. Das ist eine Instance von TStadt.
das getname von TStadt gibt nur eine private Variable zurück.

Delphi-Quellcode:
function TStadt.getName: string;
begin
  result := name;
end;
5. was zeigt AllStadte.Count an
Zeig nach dem add´n 1 an.


Wer noch mehr infos braucht, einfach fragen.
Ich versuch alle nötigen Informationen zu liefern.
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Problem mit msvcrt.dll

  Alt 2. Jul 2014, 13:37
OK, fehlt noch :
6. Ist AllStadte[0] zu diesem Zeitpunkt auch assigned
7. Kommt er in die Routine TStadt.GetName (Haltepunkt setzen)
8. Wie sieht TStadt aus
9. Was macht TStadt.Create
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Problem mit msvcrt.dll

  Alt 2. Jul 2014, 14:56
Zum Ersten Bild, wo war da eigentlich grade die Codeausführung?

Wenn TStadt.Create, bzw. eigentlich die Zuweisung an die Variable "Temp" noch nicht ausgeführt war, dann steht in dieser Variable nunmal ein Zufallswert und demnach wäre es dort vollkommen Normal, daß da "Mist" angezeigt werden würde.

Zitat:
Delphi-Quellcode:
procedure TForm6.FormCreate(Sender: TObject);
begin
  if not Assigned(self.Berechnung) then
  begin
    self.Berechnung := TErrechne.create;
  end;
end;
Wozu das Assigned?
Gibt es denn noch eine andere Stelle wo das Ding initialisiert wird?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Problem mit msvcrt.dll

  Alt 2. Jul 2014, 15:54
Hey,
Bin gerade im Zug und nur mit Handy im Netz
Deswegen kann ich keine sourcen zeigen.
@himitsu
Ja temp wurde vorher erstellt, und der Parameter heißt auch Test.
Wegen aasigned war nur wegen der Sauberkeit.
Das wird nirgendswo anders erstellt.
@baumina
6) ja es ist auch zu diesen zeit Punkt assigned
7) ja kommt er rein. Dann steht im debugger bei Self auch solch ein komische. Wert.

8/9 kann ich dir erst heut Abend zeigen, da ich nur im Zug on bin.

Ist aber eigentlich nichts spektakuläres.
Klasse an sich paar Funktion und paar Variablen im private Bereich.
Der constructor weiß auch nur werte den private Variablen zu.
Genaueres zeige ich dir heut Abend.
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

AW: Problem mit msvcrt.dll

  Alt 2. Jul 2014, 16:01
Self.Name bzw. Self.ClassName zeigen auch Mist?

Wenn ja, dann sieht es erstmal so aus, als wenn die verwendete Instanz/Instanzzeiger futsch wäre,
also von dem TErrechne in der Variable, über welche das AddStadt aufgerufen wurde.




Pssst, Internet per WiFi freigeben und dann mit'm Schlepptop/Tablet.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Problem mit msvcrt.dll

  Alt 2. Jul 2014, 18:49
Ja aber im Zug bzw im Bus habe ich schlecht Empfang, Nachteil wenn man aufm Land lebt

Ja und mein anscheinend nach verliert er wohl die Genaue Adresse im Arbeitsspeicher, aber ich kann mir nicht erklären warum ...
Werde nachher mal das Projekt nachladen
Wäre cool wenn ihr euch das mal anschauen könnt und ob ihr Fehler bekommt ..
Fehler müsste schon beim Start des Formulars entstehen.

Nicht wunder über Funktion etc. Es war halt noch in Entwicklung...

Ps. Arbeitskollege meinte Name könnte oft verwendet werden und ich möge die Parameter Namen doch bitte ändern, dass hatte leider auch kein erfolg.
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !

Geändert von Mokus ( 2. Jul 2014 um 18:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Problem mit msvcrt.dll

  Alt 3. Jul 2014, 02:55
Ps. Arbeitskollege meinte Name könnte oft verwendet werden und ich möge die Parameter Namen doch bitte ändern, dass hatte leider auch kein erfolg.
Der Name des Parameters entscheidet nicht über den Speicherplatz.

Und selbst wenn da irgendwo im Code Millionen von Variablen/Eigenschaften/... mit dem gleichen Namen rumschwirren, der Parameter ist innerhalb der Methode im Scope und darum gibt es bei Name auch nur den und nichts anderes.
Delphi-Quellcode:
TFoo = class
  Name : string;
  constructor Create( Name : string );
  procedure Bar( Name : string );
end;

constructor TFoo.Create( Name : string );
begin
  inherited Create;
  Self.Name { das Feld } := Name { der Parameter };
end;

procedure TFoo.Bar( Name : string );
begin
  Self.Name { das Feld } := Name { der Parameter };
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Problem mit msvcrt.dll

  Alt 3. Jul 2014, 10:35
Und mit dem Unitnamen kommt man auch noch an eine globale Variable "Name".

Ja, ich verwende sowas auch öfters, da ich nicht die Name Bezeichner komisch benennen oder mit Präfixen versehen will,
aber wenn man das macht, dann muß man eben auch aufpassen, daß man auch immer das Richtige erwischt.
$2B or not $2B
  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 09:09 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