![]() |
AW: An welcher Position war/ist die Variable im Template
Wäre es denkbar, daß du dir den Counter selbst irgendwie merkst? Das würde sogar eine Änderung des Templates überstehen.
|
AW: An welcher Position war/ist die Variable im Template
Zitat:
|
AW: An welcher Position war/ist die Variable im Template
Aus dem Kopf ungetestet ungefähr so: ?
Delphi-Quellcode:
const
TMP_COUNTER = '%counter%'; TMP_YEAR = '%year%'; function ExtractCounterFromString(const AString: string; const ATemplate: string): integer; var liPosCounter, liLengthCounter: integer; liLengthYear: integer; lsResult: string; begin liPosCounter := Pos(TMP_COUNTER, ATemplate); liLengthCounter := Length(TMP_COUNTER); liLengthYear := Length(TMP_YEAR); lsResult := Copy(AString, liPosCounter + liLengthCounter + 1, Length(AString)); lsResult := Copy(lsResult, 1, Length(lsResult) - liLengthYear); Result := StrToIntDef(lsResult, -1); end; procedure ImportiereDatensaetze; var liMaxCounter: integer; begin liMaxCounter := -1; while EinDatensatzErfolgreichGelesen do begin liMaxCounter := max(liMaxCounter, ExtractCounterFromString(GelesenerDatensatz.CounterString); end; DoWhateverWith(liMaxCounter); end; |
AW: An welcher Position war/ist die Variable im Template
Ich denke, Du musst das Problem mal zerlegen.
1) Du bekommst folgende Strings 1001030812016 10012530812016 100217830812016 10047930812016 aus einer Datenbank? 2) Du willst den höchsten Counter heraus finden? 3) Es können unterschiedliche Templates benutzt worden sein, also wäre als String auch 1232016 denkbar, wo Counter 23 oder 3 sein kann? 4) Du hast keine Ahnung, welche Template zu Grunde lag und wie das strukturiert war? 5) An den aktuellen Gegebenheit kannst Du nichts umstellen? |
AW: An welcher Position war/ist die Variable im Template
Zitat:
|
AW: An welcher Position war/ist die Variable im Template
@ringli
Delphi-Quellcode:
StringReplace( '100%counter%234', '%counter%', '42' ) => '10042234'
|
AW: An welcher Position war/ist die Variable im Template
Man kann so einen String auseinandernehmen, wenn das Template bekannt ist und es nur eine Variable gibt.
Wenn im Template also
Delphi-Quellcode:
und
'%counter%'
Delphi-Quellcode:
enthalten sind, dann kann ich jede Kombination aus einem beliebigen Template erkennen, wenn zugleich gewährleistet ist, dass
'%year%'
Delphi-Quellcode:
immer 4-stellig ist. (Die Platzhalter für counter sollte allerdings nur einmal vorkommen).
'%year%'
Das Template selber muss aber bekannt sein. Oder anders ausgedrückt, das Template muss für jeden counter-Wert einen eindeutigen Wert liefern, dann kann man es auch zurückrechnen. |
AW: An welcher Position war/ist die Variable im Template
Zitat:
|
AW: An welcher Position war/ist die Variable im Template
Zitat:
|
AW: An welcher Position war/ist die Variable im Template
Ich könnte mir das etwa so vorstellen:
Delphi-Quellcode:
counterValue := '42';
highestValue := 0; StringReplace('100%counter%234', '%counter%', counterValue); if IntToStr(counterValue) > highestValue then begin hightestValue := IntToStr(counterValue); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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