Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Wo ist der Fehler?? - copy/length et al (https://www.delphipraxis.net/164527-wo-ist-der-fehler-copy-length-et-al.html)

friedemann2009 16. Nov 2011 19:41


Wo ist der Fehler?? - copy/length et al
 
Liebe Leute,

ich finde den Fehler einfach nicht. Ich habe folgenden String:
Code:
meinstring:= '{"completed_in":0.187,"max_id":136875806193483779,"max_id_str":"136875806193483779","next_page":"?page=2&max_id=136875806193483779&q=Konflikt&lang=de&rpp=100&include_entities=1","page":1,"query":"Konflikt","refresh_url":"?since_id=136875806193483779&q=Konflikt&lang=de&include_entities=1","results":[{"created_at"'
Dann habe ich mir folgende Funktion gebastelt:

Delphi-Quellcode:
Function GibMirData(Quellstr, AnfangsTag, EndTag: string): string;
var
  start, ende: integer;
begin
  start:= pos(AnfangsTag, Quellstr);
  ende:= pos(EndTag, Quellstr);
  result:= copy(Quellstr, start + length(AnfangsTag), ende-start - length(EndTag)+1);
end;
Bei folgender Abfrage

Delphi-Quellcode:
ergebnis:= GibMirData(meinstring, '"max_id":', ',"max_id_str":')
bekomme ich aber nicht raus, was ich will (nämlich: 136875806193483779), sondern: ":13687580619348377

Warum?

Bin für jeden Tipp dankbar!

Schönen Abend Euch allen und beste Grüße aus HD,
Frieder

himitsu 16. Nov 2011 19:50

AW: Wo ist der Fehler?? - copy/length et al
 
Tipp:
- Debugger nehmen
- schauen was überall für Werte rauskommen
- vergleichen mit den Werten, welche du erwartest
- Code so korrigien, daß die Werte stimmen
- fertig


Tipp 2: Das ist ein JSON-String.
Nimm dir eine JSON-Klasse, laß' diese das ordentlich zerlegen und laß' dir den gewünschten Wert geben.

friedemann2009 16. Nov 2011 20:18

AW: Wo ist der Fehler?? - copy/length et al
 
Zu Tipp1: hab ich alles schon gemacht, x-fach! Und das verrückte: Wenn ich z.B. einen String
Code:
derstring:= 'linkerrandDASMEINTEXTrechterrand'
habe, dann wird mir mit der Funktion auch das korrekte Ergebnis ausgegeben;

Delphi-Quellcode:
ergebnis:= GibMirData(derstring, 'linkerrand', 'rechterrand')
// ergebnis = DASMEINTEXT
- nicht aber bei dem o.g. String! Daher hier das Posting..

Zu Tipp2: Ist mir bewusst. Aber für D5 habe ich keine json-Komponente/-Unit gefunden. Sonst könnte ich mir in der Tat viel Arbeit ersparen..

Danke und schöne Grüße,
Frieder

Bjoerk 16. Nov 2011 20:24

AW: Wo ist der Fehler?? - copy/length et al
 
Delphi-Quellcode:
result:= copy(Quellstr, start + length(AnfangsTag), ende - start - length(AnfangsTag));

Luckie 16. Nov 2011 20:25

AW: Wo ist der Fehler?? - copy/length et al
 
Na ja, du hast am Anfang ein Zeichen zu viel.
Wie wäre es mit
Delphi-Quellcode:
start + length(AnfangsTag) + 1
?

Sir Rufo 16. Nov 2011 21:22

AW: Wo ist der Fehler?? - copy/length et al
 
Ich habe da mal ne ganz doofe Frage zu der Frage:

Welchen Zweck verfolgst du damit?

mE macht es relativ wenig Sinn einen JSON-String so zu vergewaltigen :mrgreen:
Nimm dir einfach mal eine JSON-Lib (z.B. SuperObject) zur Hand ;)

friedemann2009 17. Nov 2011 07:08

AW: Wo ist der Fehler?? - copy/length et al
 
Moin zusammen,

also die bisherigen Vorschläge zum Code klappen alle nicht - mit dem json-String.

- Bisher habe ich noch keine json-Lib gefunden, die mit D5 Prof. läuft. Ich versuche mal das Superobject und melde mich dann wieder..

Danke schon mal!

Schöne Grüße,
Frieder

friedemann2009 17. Nov 2011 07:21

AW: Wo ist der Fehler?? - copy/length et al
 
Leider läuft bei mir auch das superobject nicht (Compileranweisung IF, ELSE usw. kennt D5 nicht).

Hat jemand noch eine Alternative? - Sonst bleibt mir eben doch nur das String-Gefrickel..

EDIT: Ok, ich hab den Fehler im Code..aber keine Ahnung, warum es in einem anderen Programm bislang einwandfrei funktionierte.. :glaskugel:

Danke und schöne Grüße,
Frieder

Sir Rufo 17. Nov 2011 07:43

AW: Wo ist der Fehler?? - copy/length et al
 
Wäre ja mal gut, wenn du in deinem Profil deine Delphi-Version hinterlegen würdest ;)


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