Ich wollte nur auf die Möglichkeit hingewiesen haben. "Quark" und "mehr als sinnlos" ist doch ziemlich übertrieben.Hitman hat geschrieben:Das wäre in dem Kontext aber Quark. "As" führt nochmal einen Typ-Check durch, das wäre mehr als sinnlos. Hier sollte man also durchaus beim "direkten" Cast bleiben, wenn man ohnehin vorher schon auf den Typ geprüft hat.
Anfangshürden
Re: Anfangshürden
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Anfangshürden
"In dem Kontext" nichttheo hat geschrieben:Ich wollte nur auf die Möglichkeit hingewiesen haben. "Quark" und "mehr als sinnlos" ist doch ziemlich übertrieben.

Für "as" hätte man ein günstigeres Beispiel wählen müssen, um sinnvoll zu sein:
Code: Alles auswählen
var
listBox: TListBox;
begin
listBox := Sender as TListBox;
if listBox <> nil then
begin
{... do stuff with listbox here}
end;
end;
Re: Anfangshürden
Ich kann auch KlugscheissernHitman hat geschrieben: Für "as" hätte man ein günstigeres Beispiel wählen müssen, um sinnvoll zu sein:

Das ist nun WIRKLICH Falsch! as gehört in diesem Falle in ein try..except da es ein EInvalidCast schmeisst, im Unterschied zum direkten cast, wo die Misere erst später bemerkbar wird.
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Anfangshürden
Stimmt, da hab ich mich wohl von C# hinreißen lassen. Dennoch führt "as" nochmal "is" aus - würde ich also nach wie vor vermeiden, wenn man ohnehin vorher "is" schon ausführt. (wenn man sich den generierten code mal anschaut, wird das erheblich mehr dadurch)
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Anfangshürden
Code: Alles auswählen
if listBox <> nil then
begin
{... do stuff with listbox here}
end;
MFG
Michael Springwald
Michael Springwald
Re: Anfangshürden
Hast du meinen Kommentar gelesen?pluto hat geschrieben: Ich glaube es ist sinnvoller das mit Assigned zu machen. Z.B. so: if Assigned(ListBox) then ....
Käse bleibt Käse ob mit Assigned oder <>nil .
Wieso soll übrigens assigned hier sinnvoller sein? (Vorausgesetzt das Beispiel wäre überhaupt sinnvoll)
-
- Beiträge: 238
- Registriert: So 13. Dez 2009, 09:43
- OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
- CPU-Target: x86 64Bit
- Wohnort: Niederösterreich
Re: Anfangshürden
Merkwürdiges Phänomen
Wenn ich dieses Stück Code so laufen lasse, funktioniert es wie gewünscht.
Der Text aus Edit1 wird in die aktive Listbox eingefügt.
(Drück ich 10x auf Button3 auch 10 mal)
Sobald ich die Zeile mit ShowMessage mitcompiliere (Kommentar weg) fügt das Programm den Text in die Listbox ein, zeigt mir die Message (Mit dem Inhalt des zweiten Elementes wie's sein soll, und sobald ich in der MessageBox "Ok" drücke, ist das Element wieder aus der Listbox verschwunden.
Kann mir das jemand erklären?
Code: Alles auswählen
procedure TForm1.Button3Click(Sender: TObject);
var i : word;
AktiveLB : TListBox;
begin
for i:=0 to PageControl2.ActivePage.ControlCount-1 do
if PageControl2.ActivePage.Controls[i] is TListBox then
begin
if Edit1.Text <> '' then
begin
AktiveLB := TlistBox(PageControl2.ActivePage.Controls[i]);
AktiveLB.Items.Add(Edit1.Text);
//ShowMessage(AktiveLB.Items[1]);
break;
end;
end;
end;
Der Text aus Edit1 wird in die aktive Listbox eingefügt.
(Drück ich 10x auf Button3 auch 10 mal)
Sobald ich die Zeile mit ShowMessage mitcompiliere (Kommentar weg) fügt das Programm den Text in die Listbox ein, zeigt mir die Message (Mit dem Inhalt des zweiten Elementes wie's sein soll, und sobald ich in der MessageBox "Ok" drücke, ist das Element wieder aus der Listbox verschwunden.
Kann mir das jemand erklären?
Früher war alles besser. Und aus Holz!
Re: Anfangshürden
Kann ich nicht reproduzieren Lazarus 0.9.29 r22524M FPC 2.2.4 i386-linux-gtk 2 (beta)AlterMann hat geschrieben:Kann mir das jemand erklären?
Welches Betriebssystem? Welche Laz Version? (Hilfe -> Über Lazarus -> Rechts-Click auf das Bild)
-
- Beiträge: 238
- Registriert: So 13. Dez 2009, 09:43
- OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
- CPU-Target: x86 64Bit
- Wohnort: Niederösterreich
Re: Anfangshürden
Lazarus 0.9.28.2 r22279 FPC 2.2.4 i386-win32-win32/win64
XP-Prof
XP-Prof
Früher war alles besser. Und aus Holz!
Re: Anfangshürden
Mal abwarten, vielleicht kann das ein Windöser bestätigen.AlterMann hat geschrieben:Lazarus 0.9.28.2 r22279 FPC 2.2.4 i386-win32-win32/win64
Mir ist aber Showmessage für sowas zu mühsam.
Mach mal Projekt -> Compilereinstellungen -> Linken bei Win32 GUI Anwendung das Häkchen weg. Dann kriegst du zusätzlich eine Konsole auf die du writeln kanst.
Writeln ist nur schon besser, weil du nicht alles Umwandlen und Konkatenieren musst.
z.B. Writeln(32,'test',43); ist kein Problem
-
- Beiträge: 238
- Registriert: So 13. Dez 2009, 09:43
- OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
- CPU-Target: x86 64Bit
- Wohnort: Niederösterreich
Re: Anfangshürden
Na das ist ja mal ein Supertipp.theo hat geschrieben: Mach mal Projekt -> Compilereinstellungen -> Linken bei Win32 GUI Anwendung das Häkchen weg. Dann kriegst du zusätzlich eine Konsole auf die du writeln kanst.
Writeln ist nur schon besser, weil du nicht alles Umwandlen und Konkatenieren musst.
z.B. Writeln(32,'test',43); ist kein Problem

Ich habe schon um mein gutes altes Writeln von TP geweint.
Hätte nicht gedacht, daß das noch da ist.
Damit ist das merkwürdige Verhalten auch weg.
Früher war alles besser. Und aus Holz!
Re: Anfangshürden
Das ist fast alles noch da. Mit dem Freepascal Compiler kann man ja auch weiterhin so arbeiten. http://www.freepascal.org/port.var" onclick="window.open(this.href);return false;AlterMann hat geschrieben: Ich habe schon um mein gutes altes Writeln von TP geweint.
Hätte nicht gedacht, daß das noch da ist.
Auch http://www.freepascal.org/docs-html/" onclick="window.open(this.href);return false;
-
- Beiträge: 238
- Registriert: So 13. Dez 2009, 09:43
- OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
- CPU-Target: x86 64Bit
- Wohnort: Niederösterreich
Re: Anfangshürden
Daß es noch existiert hab ich eh schon gesehen, aber ich konnte mir nicht erklären wo es etwas hinschreiben sollte.theo hat geschrieben: Das ist fast alles noch da. Mit dem Freepascal Compiler kann man ja auch weiterhin so arbeiten.

BTW: Jetzt hab ich eine (diesmal sinnvolle) Showmessge-Routine eingefügt und die schluckt auch wieder meine Eingabe.

Früher war alles besser. Und aus Holz!
-
- Beiträge: 475
- Registriert: Do 15. Nov 2007, 16:58
- OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
- CPU-Target: i386, x64
- Wohnort: Gera
Re: Anfangshürden
Ich kann's leider nicht nachvollziehen. Hab's grad auf WinXP Prof. mit Laz 0.9.28.2/fpc 2.2.4 und Win7 Laz 0.9.29(r23075)/fpc 2.5.1 probiert. Es läuft auf beiden Systemen fehlerfrei.
mfg Ingo
-
- Beiträge: 512
- Registriert: Mo 25. Aug 2008, 18:17
- OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
- CPU-Target: x86
- Wohnort: Chemnitz
Re: Anfangshürden
Assigned bringt in dem Fall nicht viel. Es ist primär für den Fall von Methodenzeigern (also häufig Events [procedure ... of object]) da diese nicht nur aus einem sondern aus zwei Zeigern bestehen - dem auf die Methode und dem auf das Objekt. Assigned prüft dann beide. Für alle anderen Fälle ist es dann lediglich Geschmackssache, was man im Code schöner findet.pluto hat geschrieben:Ich glaube es ist sinnvoller das mit Assigned zu machen. Z.B. so: if Assigned(ListBox) then ....