Entwickler-Ecke
Algorithmen, Optimierung und Assembler - verwendung einer procedure
paul_swatschina - Fr 04.04.08 18:07
Titel: verwendung einer procedure
hallo leute,
folgendes problem:
ich scheibe ein komplexes mathematik programm um würde EVENTUEL eine procedure brauchen, die ich aus dem internet downgeloaded habe. das problem ist, dass meine typen die ich in diese procedure reinladen will nicht genau den typen entsprechen, die dafür vorgesehen sind...
die frage lautet also: wie wandle ich das um???
ich verstehe nämlich den code null und nüsse, da ich kein programmier-chef bin.
und zwar mein typ heisst
pauls_matrix = array of array;
die dimensionen werden zur laufzeit festgesetzt.
es folgt der code dieser downgeloadeten unit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| Vector = ARRAY[1..4] of EXTENDED; Array16 = ARRAY[1..16] of EXTENDED; Array15by2 = ARRAY[1..15,1..2] of EXTENDED; Str250 = STRING[250]; Str64 = STRING[64];
Intarray = ARRAY[1..6] of INTEGER;
MatrixDataPtr = ^MatrixData; MatrixData = RECORD Index : INTEGER; Number : EXTENDED; Next,Last : MatrixDataPtr; END; MatrixPtr = RECORD NumRows,NumCols : INTEGER; DPtr : MatrixDataPtr; Head,Tail : MatrixDataPtr; END; Matrix = ^MatrixPtr; |
der letzte typ "Matrix" soll aus meiner obengenannten "pauls_matrix" entstehen.
dazu gibt es scheinbar auch eigene proceduren in der unit:
funktioniert das? was geht hier eigentlich ab? ich verstehe die pointer an sich nicht...
ich weiss ich könnts ausprobieren, weiss aber nicht ob es prinzipiell lohnt...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88:
|
PROCEDURE ASSIGNVAL ( VAR A : Matrix; Row,Col : INTEGER; Number : EXTENDED ); VAR Temp : EXTENDED; BEGIN Temp:= GETVAL( A,Row,Col ); A^.DPtr^.Number:= Number; END;
FUNCTION GETVAL ( VAR A : Matrix; Row,Col : INTEGER ) : EXTENDED; VAR i,j : INTEGER; BEGIN j:= (Row-1)*A^.NumCols + Col;
WHILE ( j > A^.DPtr^.Index ) and ( A^.DPtr^.Next <> NIL ) DO A^.DPtr:= A^.DPtr^.Next;
WHILE ( j < A^.DPtr^.Index ) and ( A^.DPtr^.Last <> NIL ) DO A^.DPtr:= A^.DPtr^.Last;
GETVAL:= A^.DPtr^.Number;
END; |
Moderiert von
Gausi: Delphi-Tags hinzugefügt.
Blackheart666 - Fr 04.04.08 19:24
| Zitat: |
| ich weiss ich könnts ausprobieren, weiss aber nicht ob es prinzipiell lohnt... |
Und andere sollen nun für dich dich die Arbeit übernehmem !
paul_swatschina - Fr 04.04.08 23:07
jajaja...
ich kann ja nicht einmal meine array of array dieser komischen form übergeben...
das würd ich gern wissen, wie man das macht!
und wenn mir dann jemand aus erfahrung noch sagen könnte ob sich so ein pointer-zeugs rentiert, wäre es auch nicht schlecht zu wissen.
paul
busybyte - Sa 05.04.08 00:23
Kommt darauf an,was Du damit machen willst,es ist eine supperschnelle Routine dank Pointer,
aber nicht ohne weiteres für offene Arrays, wie Du sie verwenden willst umzubauen.
Deswegen würde ich Dir empfehlen dich mal mit Pointern zu beschäftigen,aber nicht für Deine Arrays.
Bin aber auch nicht der MegaDelphin.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!