Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi überspringt eine Zeile... (https://www.delphipraxis.net/14091-delphi-ueberspringt-eine-zeile.html)

FriFra 2. Jan 2004 01:57


Delphi überspringt eine Zeile...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Aus irgendeinem Grund überspringt Delphi eine Zeile (Zeile 4 der Abbildung) in meinem Code:

Ich hatte die Datei auch schon im DOS-Editor geöffnet und gespeichert, da dabei ungültige Zeichen meistens entfernt werden... aber auch ohne Erfolg :cry: ...

[edit=sakura] Img entfernt. Die 139 Kb stehen ja als Anhang zur Verfügung. Mfg, sakura[/edit]

w3seek 2. Jan 2004 02:00

Re: Delphi überspringt eine Zeile...
 
Der Optimierer ist hoechstwahrscheinlich der "schuldige". Code der nicht wirklich benoetigt wird wird einfach weggelassen. Schau mal ob du irgendwelche Hinweise vom compiler bekommen hast. Wenn du hinweise bekommen hast kannst du (je nach hinweis) natuerlich die zeile getrost weglassen da sie schlicht ueberfluessig ist.

FriFra 2. Jan 2004 02:12

Re: Delphi überspringt eine Zeile...
 
Zitat:

Zitat von w3seek
Code der nicht wirklich benoetigt wird wird einfach weggelassen. Schau mal ob du irgendwelche Hinweise vom compiler bekommen hast.

Es gibt aber keinen Grund diesen Code einfach zu überspringen, denn nur ein paar Zeilen später frage ich die bettr. Variable ab... das ist natürlich sinnlos, da diese Zeile einfach übersprungen wird und somit ist auch die Variable unverändert :evil: ...

Motzi 2. Jan 2004 09:08

Re: Delphi überspringt eine Zeile...
 
Du siehst anhand der blauen Punkte neben den Zeilen bereits welche Zeilen wirklich verwendet werden... neben deiner betroffenen Zeile ist kein Punkt, daher wird sie auch übersprungen. Lösch mal alle DCUs und kompilier das gesamte Projekt neu. Bringt das auch nix dann schmeißt der Compiler die Zeile zwecks Optimierung raus und du hast wahrscheinlich irgendwo einen Logik-Fehler...

FriFra 2. Jan 2004 10:34

Re: Delphi überspringt eine Zeile...
 
Zitat:

Zitat von Motzi
Lösch mal alle DCUs und kompilier das gesamte Projekt neu.

:D Jetzt klappts... War aber schon ne komische Sache :gruebel:

himitsu 2. Jan 2004 10:44

Re: Delphi überspringt eine Zeile...
 
Du muß nicht unbedingt die DCU's löschen. Man kann auch anders dafür sorgen, dass die DCU's neu erzeugt werden:

Menü - Projekt - Projekt erzeugen / alle Projekte erzeugen

Motzi 2. Jan 2004 10:59

Re: Delphi überspringt eine Zeile...
 
Zitat:

Zitat von himitsu
Du muß nicht unbedingt die DCU's löschen. Man kann auch anders dafür sorgen, dass die DCU's neu erzeugt werden:

Menü - Projekt - Projekt erzeugen / alle Projekte erzeugen

Ja.. aber ich geh da immer auch Nummer sicher.. ;)

sakura 2. Jan 2004 11:00

Re: Delphi überspringt eine Zeile...
 
Zitat:

Zitat von himitsu
Menü - Projekt - Projekt erzeugen / alle Projekte erzeugen

Das bezieht sich aber nur auf die PAS Dateien, die fest dem Projekt zu geordnet sind. Die Units, welche in den Uses-Klauseln der anderen Units auftauchen sind nicht unbedingt davon beeindruckt ;-)

...:cat:...

Kevin 5. Mai 2004 21:02

Re: Delphi überspringt eine Zeile...
 
Nur der Vollständigkeit halber, weil ich soeben das gleiche Problem hatte und den Grund (zumindest bei mir) dafür gefunden habe:

Bei mir hat er die Zeilen, in denen ich einen Boolean-Wert zugeordnet habe beim Kompilieren übersprungen, weil ich den Wert im folgenden Code (noch) nicht wieder verwendet habe. Nachdem ich dan den Wert benutzt habe, wurden die Zeilen auch nicht mehr übersprungen.

Ist also tatsächlich der Code-Optimierer gewesen. Nur halt ein wenig "voreilig"... :mrgreen:

War wohl selber etwas voreilig, hab grad gelesen, daß FriFra ja den Wert abgefragt hat... :gruebel:

Naja, egal, mein "Problem" hab ich jedenfalls gelöst :coder:

LocoMH 25. Aug 2012 13:58

AW: Delphi überspringt eine Zeile...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
verzeiht die Auffrischung dieses uralten Beitrages, ich habe aber das gleiche Problem und wollte keinen neuen Thread eröffnen, wenn das ein Fehler ist, bitte verschieben!

Bei mir hat sich das Problem allerdings nicht durch das Löschen der .dcu-Datei gelöst, auch das Öffnen und Speichern der .pas-Datei mithilfe des Editors brachte keinen Erfolg. Delphi hat weiterhin eine, nennen wir es eigenartige, Auffassung der notwendige Zeilen (s. blaue Punkte). Was soll ich da tun? Zur Info: Ich habe die Unit ursprünglich auf einem Windows 7 64-bit PC erstellt. Jetzt arbeite ich aber gerade auf einem 32er Vista. Allerdings haben alle anderen Units aus dem Projekt kein Problem.

In der Hoffnung, dass mir weitergeholfen werden kann,

LocoMH

himitsu 25. Aug 2012 16:56

AW: Delphi überspringt eine Zeile...
 
Ich glaub eher du hast ein Problem mit einem ungeeignetem (geschütztem) Verzeichnis.
Man hat standardmäßig eigentlich keine Schreibzugriffe auf das Programmeverzeichnis. Window7 virtualisiert die Dateizugriffe, inkompatibler und fehlerhaft programmierter Anwendungen, und leitet nun bei Schreibzugriffen in ein anderes Verzeichnis um.
Suche mal in %LOCALAPPDATA%\VirtualStore nach deinen DCUs.

Erstmal solltest du die Finger von hardgecodeten Verzeichnissen lassen und dann verschiebe dein koplettes Projektverzeichnis raus aus dem Programme-Ordner. (z.B. in die Eigenen Dateien)
Den Standardpfad für Projekte kannst du auch irgendwo in den Delphi-Einstellungen anpassen.

Delphi-Quellcode:
s := ExtractFilePath(Application.ExeName) + 'Graphics\Suche....\';
//oder
s := ExtractFilePath(ParamStr(0)) + 'Graphics\Suche....\';

LocoMH 25. Aug 2012 19:22

AW: Delphi überspringt eine Zeile...
 
Hallo,
vielen Dank schon mal nach Dresden.

Ich habe jetzt nur den 32bit Rechner hier (der andere steht derzeit in - Dresden!), also Vista. Dort habe ich jetzt den VirtualStore Ordner gefunden, wo interessanterweise genau die dcu der Problem-Unit fehlt. Was kann ich an der Stelle tun? Ich habe die dcu dort eingefügt, das brachte aber keine Änderung.
Auch den String habe ich geändert, wobei das bei den anderen Units auch drin ist und keine Probleme gemacht hat.
Dann hab ich noch den ganzen Ordner kopiert und in die Eigenen Dateien getan...naja, hat leider auch nicht funktioniert :(

Was mich an der ganzen Sache allerdings noch mehr irritiert: Der Code funktioniert zur Laufzeit bis auf eine (nach der Umstellung auf diesen Rechner hinzugefügte) Zeile hervorragend...

Also, wie gesagt, danke schon mal für die Hilfe.

p80286 25. Aug 2012 21:20

AW: Delphi überspringt eine Zeile...
 
Ich glaube, da liegt ein Mißverständnis vor.
Du solltest es tunlichst vermeiden unter C:\Programm Files\... Deinen Sourcecode oder DCUs oder EXEn zu speichern.
Sie sind z.B. unter C:\Benutzer\benutzername\Dokuments\MeinePascalDateinen wesentlich besser augehoben.

Des weiteren solltest Du es mal mit "Build" statt "Compile" versuchen.

Gruß
K-H

LocoMH 25. Aug 2012 23:40

AW: Delphi überspringt eine Zeile...
 
Vielen Dank auch dir für die Hilfe...und dennoch, es ändert nichts an dem Problem. Ich habe jetzt also den gesamten Ordner ausgelagert und es mit Build versucht...alles beim Alten, die Punkte sind an den falschen Stellen und mit F7/8 springt er auch in genau diese Zeilen. Das ist doch wie verhext...

himitsu 26. Aug 2012 00:24

AW: Delphi überspringt eine Zeile...
 
Du könntest natürlich auch mal die Datei in eine Zip packen und hier hochladen.
Oder bist du dir ganz sicher, daß da wirklich keine Zeichen drin enthalten sind, welche dafür verantworlich sein könnten?

LocoMH 26. Aug 2012 01:01

AW: Delphi überspringt eine Zeile...
 
Ich bin mir äußerst sicher. Und wenn doch, dann weiß ich wenigstens nicht welches. Hier also die betroffene Unit, vielleicht gibt das ja Aufschlüsse. Ich würde vorerst ungern alles hochladen, wenn das hier nicht zur Lösung des Problems beitragen kann werd ichs wohl dann aber tun.

Delphi-Quellcode:
unit uSuche;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TFormSuche = class(TForm)
    pnSuche: TPanel;
    imSuchebg: TImage;
    imChosen3: TImage;
    imChosen2: TImage;
    imChosen1: TImage;
    lbnachStudiengang: TLabel;
    lbnachVorlesung: TLabel;
    lbnachDozent: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure lbnachStudiengangClick(Sender: TObject);
    procedure imSuchebgClick(Sender: TObject);
  private
    pChosen, pChosenP, pChosenC: TPicture;
    OptionChosen: Integer;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FormSuche: TFormSuche;

implementation

uses uMain;

{$R *.dfm}

procedure TFormSuche.FormCreate(Sender: TObject);
var s: String;
begin

  s := 'Graphics\Suche\';

  DoubleBuffered := True;
  pnSuche.DoubleBuffered := True;

  pChosen := TPicture.Create;
  pChosenP := TPicture.Create;
  pChosenC := TPicture.Create;

  pChosen.LoadFromFile(s + 'btChosen.png');  
  pChosenP.LoadFromFile(s + 'btChosenP.png');
  pChosenC.LoadFromFile(s + 'btChosenC.png');

  imSucheBG.Picture.LoadFromFile(s + 'SucheBG.png');
  imChosen1.Picture := pChosenC;                    
  imChosen2.Picture := pChosen;
  imChosen3.Picture := pChosen;

  lbnachDozent.Caption := 'nach' + #13 + 'Dozent';

  OptionChosen := 1;
 
  pnSuche.Width := 1000;
  pnSuche.Height := 530;
  pnSuche.Left := 12;
  pnSuche.Top := 78;
  pnSuche.Parent := FormMain
end;

procedure TFormSuche.lbnachStudiengangClick(Sender: TObject);
var a: Integer;
begin
  a := (Sender as TLabel).Tag;
  TImage(FindComponent('imChosen'+inttostr(a)).Picture := pChosenC;
  TImage(FindComponent('imChosen'+inttostr(OptionChosen)).Picture := pChosen;
  OptionChosen := a;
  FormNachStudiengang.ChangeStudiengang(1)
end;

end.

himitsu 26. Aug 2012 01:06

AW: Delphi überspringt eine Zeile...
 
Und da sag ich extra noch, das sie gepackt ans Anhang hochgeladen werden soll, denn so bringt das nicht viel, da jetzt alle eventuell mal vorhandenen störenden Sonderzeichen geschrottet sind. :wall:

LocoMH 26. Aug 2012 01:09

AW: Delphi überspringt eine Zeile...
 
Tut mir leid...
Ich habe grad was gemacht, was ich wohl viel früher hätte machen sollen - die Unit aus dem Projekt entfernt und wieder hinzugefügt. So sehr es mich auch wurmt, jetzt funktioniert's wieder wie es sollte...:wall:
Warum es aber das Problem gab...werd ich wohl nie erfahren.
Warum ich das nur als Text eingefügt hab, hab ich allerdings noch hinzugefügt.
In diesem Sinne: Sorry und vielen Dank für die Mühe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 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