AGB  ·  Datenschutz  ·  Impressum  







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

2 Arrays vergleichen\sortieren

Ein Thema von EWeiss · begonnen am 22. Nov 2017 · letzter Beitrag vom 30. Nov 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: 2 Arrays vergleichen\sortieren

  Alt 24. Nov 2017, 12:10
Delphi-Quellcode:
var
  Destination, Source: Pointer;
  MemorySize: SIZE_T;
begin
 ...
   MemorySize := SizeOf(Short);
   Destination := Pointer(NativeUInt(@buffer[0]) + K * MemorySize);
   Source := @A2[K];
   MoveMemory(Destination, Source, MemorySize);
Das ist keine schlechte Erklärung bzw. zu zeigen wie MoveMemory Arbeitet.
Aber sorry hier eine Funktion in 20 teile zu zerlegen macht nicht wirklich sinn.
Hilfsvariablen und Funktionen einzurichten mach sinn bei immer widerkehrenden Mechanismen aber nicht bei einer Zeile Code.
Habe noch nirgends gesehen das jemand CopyMemory in 100 Zeilen zerlegt.

gruss
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: 2 Arrays vergleichen\sortieren

  Alt 24. Nov 2017, 12:45
Delphi-Quellcode:
var
  Destination, Source: Pointer;
  MemorySize: SIZE_T;
begin
 ...
   MemorySize := SizeOf(Short);
   Destination := Pointer(NativeUInt(@buffer[0]) + K * MemorySize);
   Source := @A2[K];
   MoveMemory(Destination, Source, MemorySize);
Das ist keine schlechte Erklärung bzw. zu zeigen wie MoveMemory Arbeitet.
Aber sorry hier eine Funktion in 20 teile zu zerlegen macht nicht wirklich sinn.
Hilfsvariablen und Funktionen einzurichten mach sinn bei immer widerkehrenden Mechanismen aber nicht bei einer Zeile Code.
Habe noch nirgends gesehen das jemand CopyMemory in 100 Zeilen zerlegt.
Aus einer unübersichtlichen Zeile werden vier. Nur drei, wenn man sich das spart die MemorySize hinzuschreiben. Plus halt die übliche Variablendeklaration.

Das ist kaum Overhead, ist besser lesbar und vor allen besser debugbar.

Wenn du es gleich so hingeschrieben hättest, dann hättest du auch sofort verstanden wo dein Problem liegt.
So haste erstmal ewig rumgeflucht und gedacht das Delphi sich hier anderes als C++ verhält bei einer WinApi-Funktion.
Das dem nicht so ist, siehste ja jetzt.

Die Leute, die solche Sachen nicht in "100 Zeilen" (danke für die schlechte Polemik) zerteilen (müssen), wissen in der Regel aber auch was sie tun.
Du bist - wie du selber betonst - halt Laie und manche Feinheiten sind dir fremd oder unverständlich (C++-Char -> Delphi-Byte, Größen von Datentypen, Operator-Überladung, Zeigerarithmetik...etc.).
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: 2 Arrays vergleichen\sortieren

  Alt 24. Nov 2017, 12:47
Zitat:
Du bist - wie du selber betonst - halt Laie und manche Feinheiten sind dir fremd oder unverständlich (C++-Char -> Delphi-Byte, Größen von Datentypen, Operator-Überladung, Zeigerarithmetik...etc.).
Richtig dessen schäme ich mich nicht.

Aber wenn ich jede mir bekannte API in ihre Bestandteile zerlegen würde hätte ich keine zeit mehr für andere Dinge

gruss
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: 2 Arrays vergleichen\sortieren

  Alt 24. Nov 2017, 13:08
Zitat:
Du bist - wie du selber betonst - halt Laie und manche Feinheiten sind dir fremd oder unverständlich (C++-Char -> Delphi-Byte, Größen von Datentypen, Operator-Überladung, Zeigerarithmetik...etc.).
Richtig dessen schäme ich mich nicht.

Aber wenn ich jede mir bekannte API in ihre Bestandteile zerlegen würde hätte ich keine zeit mehr für andere Dinge

gruss
Bei den unnötigen Wust an Quelltext, den du eh schreibst, fällt das nicht weiter ins Gewicht.
Und vielleicht machst du es nur da, wo du Probleme hast. Egal ob Verständnis-, Compiler- oder Laufzeitprobleme.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: 2 Arrays vergleichen\sortieren

  Alt 24. Nov 2017, 15:58
Zitat:
for K := 0 to Count do // Warum nicht Count-1? Wenn z.B Count 1 ist kopierst Du 2 Einträge?
Weil dann 1 Eintrag fehlt?

Das höchste Array Element ist "13" UB

Die Einträge gehen von 0 - 13 = 14 Einheiten
12 für meine Bilder und 2 für den linken und rechten Pfeil zum scrollen.

Würde ich jetzt (Count - 1) = 13 Einheiten nehmen würde mir der rechte Pfeil fehlen.

Zitat:
buffer[K] := A2[K]; // Warum das Pointer geschubse? Einfach zuweisen was anderes macht der C Code auch nicht
Gute Idee möchte aber MoveMemory behalten wegen der Kompatibilität zum original source so kann ich eventuelle Fehler besser analysieren.

gruss

Geändert von EWeiss (24. Nov 2017 um 16:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: 2 Arrays vergleichen\sortieren

  Alt 24. Nov 2017, 17:06
Zitat:
for K := 0 to Count do // Warum nicht Count-1? Wenn z.B Count 1 ist kopierst Du 2 Einträge?
Weil dann 1 Eintrag fehlt?

Das höchste Array Element ist "13" UB

Die Einträge gehen von 0 - 13 = 14 Einheiten
12 für meine Bilder und 2 für den linken und rechten Pfeil zum scrollen.

Würde ich jetzt (Count - 1) = 13 Einheiten nehmen würde mir der rechte Pfeil fehlen.


Wie du schon gesagt hast:
14 Einheiten Count = 14
Einträge gehen von 0-13 (13 = 14-1 = Count-1 )

Deine Schleife geht aber von 0-14 (Count)
Eintrag 14 existiert nicht. Und das ist schlecht.

Ich hoffe du bist grad nur etwas verwirrt
Das ist etwas was man wissen sollte sobald man for-Schleifen gemeistert hat.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: 2 Arrays vergleichen\sortieren

  Alt 24. Nov 2017, 17:14
wegen der Kompatibilität zum original source so kann ich eventuelle Fehler besser analysieren.
Der war jetzt gut Hätte nicht gedacht das Du so viel Humor hast..............
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: 2 Arrays vergleichen\sortieren

  Alt 24. Nov 2017, 17:28
Zitat:
14 Einheiten Count = 14
Nein der Count ist 13.
Und die schleife von 0 > High(UB) = 13 (14 Einheiten incl. der 0)

Mano. Muss ich jetzt noch ein Bild posten ?
Wenn es so wäre wie du sagst hätte es hier schon lang gekracht.
Auf ein nicht existierendes Element eines Arrays zuzugreifen macht AUA..

gruss

Geändert von EWeiss (24. Nov 2017 um 17:34 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz